blob: fd19834f95597ca3b6d11dfbadaf0639100da891 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
105#ifdef ANI_MANF_DIAG
106#include "pttMsgApi.h"
107#endif /* ANI_MANF_DIAG */
108
109/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700110 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700111 ===========================================================================*/
112#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
113
Jeff Johnsone7245742012-09-05 17:12:55 -0700114#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
115#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
116
Yathish9f22e662012-12-10 14:21:35 -0800117#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700118
119#ifdef FEATURE_WLAN_SCAN_PNO
120#define WDI_PNO_VERSION_MASK 0x8000
121#endif
122
123/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700126static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700127/* array of features supported. Need to add a new feature
128 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
129 */
130static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800131 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800132#ifdef WLAN_SOFTAP_VSTA_FEATURE
133 ,SAP32STA
134#else
135 ,FEATURE_NOT_SUPPORTED
136#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800137#ifdef FEATURE_WLAN_TDLS
Yathish9f22e662012-12-10 14:21:35 -0800138 ,TDLS
139#else
140 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800141#endif
Viral Modid86bde22012-12-10 13:09:21 -0800142 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathish9f22e662012-12-10 14:21:35 -0800143#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
144 ,WLANACTIVE_OFFLOAD
145#else
146 ,FEATURE_NOT_SUPPORTED
147#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800148 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700149
150/*--------------------------------------------------------------------------
151 WLAN DAL State Machine
152 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700153WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700154{
155 /*WDI_INIT_ST*/
156 {{
157 WDI_MainStart, /*WDI_START_EVENT*/
158 NULL, /*WDI_STOP_EVENT*/
159 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
160 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
161 WDI_MainClose, /*WDI_CLOSE_EVENT*/
162 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
163 }},
164
165 /*WDI_STARTED_ST*/
166 {{
167 WDI_MainStartStarted, /*WDI_START_EVENT*/
168 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
169 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
170 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
171 NULL, /*WDI_CLOSE_EVENT*/
172 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
173 }},
174
175 /*WDI_STOPPED_ST*/
176 {{
177 WDI_MainStart, /*WDI_START_EVENT*/
178 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
179 NULL, /*WDI_REQUEST_EVENT*/
180 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
181 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700182 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700183 }},
184
185 /*WDI_BUSY_ST*/
186 {{
187 WDI_MainStartBusy, /*WDI_START_EVENT*/
188 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
189 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
190 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
191 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
192 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
193 }}
194};
195
Jeff Johnsone7245742012-09-05 17:12:55 -0700196/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700197 DAL Request Processing Array - the functions in this table will only be
198 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700199 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700201WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700202{
203 /*INIT*/
204 WDI_ProcessStartReq, /* WDI_START_REQ */
205 WDI_ProcessStopReq, /* WDI_STOP_REQ */
206 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
207
208 /*SCAN*/
209 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
210 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
211 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
212 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
213
214 /*ASSOCIATION*/
215 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
216 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
217 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
218 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
219 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
220
221 /* Security */
222 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
223 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
225 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
226
227 /* QoS and BA APIs */
228 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
229 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
230 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
231 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
232 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
233
234 /* Miscellaneous Control APIs */
235 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
236 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
237 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
238 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
239 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
240
241 /*BA APIs*/
242 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
243 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
244
245 /*Beacon processing APIs*/
246 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
247 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
248
249 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
250 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
251 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
252 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
253#ifdef WLAN_FEATURE_P2P
254 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
255#else
256 NULL,
257#endif
258 /* PowerSave APIs */
259 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
260 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
261 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
262 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
263 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
264 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
265 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
266 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
267 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
268 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
269 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
270 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
271 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
272 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
273 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
274 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
275 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
276 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
277 /*NV Download APIs*/
278 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
279 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
280 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
281#ifdef WLAN_FEATURE_VOWIFI_11R
282 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
283#else
284 NULL,
285#endif /* WLAN_FEATURE_VOWIFI_11R */
286 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
287 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
288#ifdef ANI_MANF_DIAG
289 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
290#else
291 NULL,
292#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700293
294#ifdef FEATURE_OEM_DATA_SUPPORT
295 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
296#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700297 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700298#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700299 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700300
301 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700302
303#ifdef FEATURE_WLAN_SCAN_PNO
304 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
305 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
306 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
307#else
308 NULL,
309 NULL,
310 NULL,
311#endif /* FEATURE_WLAN_SCAN_PNO */
312
313 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314
Jeff Johnson295189b2012-06-20 16:38:30 -0700315#ifdef WLAN_FEATURE_PACKET_FILTERING
316 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700317 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700319 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700320 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700321 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700323 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700324#else
325 NULL,
326 NULL,
327 NULL,
328 NULL,
329#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700330 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
332 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
333
334 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
335#ifdef FEATURE_WLAN_CCX
336 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
337#else
338 NULL,
339#endif
340
341#ifdef WLAN_FEATURE_GTK_OFFLOAD
342 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
343 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
344#else
345 NULL,
346 NULL,
347#endif // WLAN_FEATURE_GTK_OFFLOAD
348
349 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
350 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700351#ifdef WLAN_FEATURE_11AC
352 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
353#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 /*-------------------------------------------------------------------------
355 Indications
356 -------------------------------------------------------------------------*/
357 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-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 Modid86bde22012-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 Koyyalamudi01cba042013-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 Koyyalamudi01cba042013-01-10 21:56:05 -08005567 @brief WDI_TrafficStatsInd
5568 Traffic Stats from the upper layer will be sent
5569 down to HAL
5570
5571 @param WDI_TrafficStatsIndType
5572
5573 @see
5574
5575 @return Status of the request
5576*/
5577WDI_Status
5578WDI_TrafficStatsInd
5579(
5580 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5581)
5582{
5583
5584 WDI_EventInfoType wdiEventData;
5585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5586
5587 /*------------------------------------------------------------------------
5588 Sanity Check
5589 ------------------------------------------------------------------------*/
5590 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5591 {
5592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5593 "WDI API call before module is initialized - Fail request");
5594
5595 return WDI_STATUS_E_NOT_ALLOWED;
5596 }
5597
5598 /*------------------------------------------------------------------------
5599 Fill in Event data and post to the Main FSM
5600 ------------------------------------------------------------------------*/
5601 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5602 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5603 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5604 wdiEventData.pCBfnc = NULL;
5605 wdiEventData.pUserData = NULL;
5606
5607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5608
5609}/*WDI_TrafficStatsInd*/
5610
5611/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 @brief WDI_HALDumpCmdReq
5613 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005614
5615 @param halDumpCmdReqParams: Hal Dump Command Body
5616 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005618
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 @see
5620 @return Result of the function call
5621*/
5622WDI_Status WDI_HALDumpCmdReq
5623(
5624 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5625 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5626 void *pUserData
5627)
5628{
5629 WDI_EventInfoType wdiEventData;
5630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5631
5632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 ------------------------------------------------------------------------*/
5635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5636 {
5637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5638 "WDI API call before module is initialized - Fail request");
5639
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 }
5642
5643 /*------------------------------------------------------------------------
5644 Fill in Event data and post to the Main FSM
5645 ------------------------------------------------------------------------*/
5646 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5647 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5648 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5649 wdiEventData.pCBfnc = halDumpCmdRspCb;
5650 wdiEventData.pUserData = pUserData;
5651
5652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5653}
5654
Jeff Johnsone7245742012-09-05 17:12:55 -07005655/*============================================================================
5656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 ============================================================================*/
5660
5661/**
5662 @brief Main FSM Start function for all states except BUSY
5663
Jeff Johnsone7245742012-09-05 17:12:55 -07005664
5665 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 wdiEV: event posted to the main DAL FSM
5667 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 structure
5669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 @see
5671 @return Result of the function call
5672*/
5673WDI_Status
5674WDI_PostMainEvent
5675(
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 WDI_ControlBlockType* pWDICtx,
5677 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005679
Jeff Johnson295189b2012-06-20 16:38:30 -07005680)
5681{
Jeff Johnsone7245742012-09-05 17:12:55 -07005682 WDI_Status wdiStatus;
5683 WDI_MainFuncType pfnWDIMainEvHdlr;
5684 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5686
5687 /*-------------------------------------------------------------------------
5688 Sanity check
5689 -------------------------------------------------------------------------*/
5690 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5691 ( wdiEV >= WDI_MAX_EVENT ))
5692 {
5693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5694 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5695 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 }
5698
5699 /*Access to the global state must be locked */
5700 wpalMutexAcquire(&pWDICtx->wptMutex);
5701
5702 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705 wdiOldState = pWDICtx->uGlobalState;
5706
5707 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5709 response comes from CCPU for the request sent by host:
5710 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 CCPU:
5714 don't change the state */
5715 if ( WDI_RESPONSE_EVENT != wdiEV)
5716 {
5717 /*Transition to BUSY State - the request is now being processed by the FSM,
5718 if the request fails we shall transition back to the old state, if not
5719 the request will manage its own state transition*/
5720 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5721 }
5722 /* If the state function associated with the EV is NULL it means that this
5723 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 {
5726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 }
5731 else
5732 {
5733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 }
5738
5739 /* If a request handles itself well it will end up in a success or in a
5740 pending
5741 Success - means that the request was processed and the proper state
5742 transition already occurred or will occur when the resp is received
5743 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005744
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 Pending - means the request could not be processed at this moment in time
5746 because the FSM was already busy so no state transition or dequeueing
5747 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 Success for synchronous case means that the transition may occur and
5750 processing of pending requests may continue - so it should go through
5751 and restores the state and continue processing queued requests*/
5752 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5753 ( WDI_STATUS_PENDING != wdiStatus ))
5754 {
5755 if ( WDI_RESPONSE_EVENT != wdiEV)
5756 {
5757 /*The request has failed or could not be processed - transition back to
5758 the old state - check to see if anything was queued and try to execute
5759 The dequeue logic should post a message to a thread and return - no
5760 actual processing can occur */
5761 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5762 }
5763 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 }
5766
5767 /* we have completed processing the event */
5768 wpalMutexRelease(&pWDICtx->wptMutex);
5769
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005771
5772}/*WDI_PostMainEvent*/
5773
5774
5775/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005777--------------------------------------------------------------------------*/
5778/**
5779 @brief Main FSM Start function for all states except BUSY
5780
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
5782 @param pWDICtx: pointer to the WLAN DAL context
5783 pEventData: pointer to the event information structure
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see
5786 @return Result of the function call
5787*/
5788WDI_Status
5789WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005790(
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 WDI_ControlBlockType* pWDICtx,
5792 WDI_EventInfoType* pEventData
5793)
5794{
5795
5796 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 ----------------------------------------------------------------------*/
5799 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5800 {
5801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 pWDICtx, pEventData);
5804 return WDI_STATUS_E_FAILURE;
5805 }
5806
5807 wpalMutexAcquire(&pWDICtx->wptMutex);
5808
5809 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 ----------------------------------------------------------------------*/
5812 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5813 {
5814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5815 "Control Transport not yet Open - queueing the request");
5816
5817 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005819
5820 wpalMutexRelease(&pWDICtx->wptMutex);
5821 return WDI_STATUS_PENDING;
5822 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 wpalMutexRelease(&pWDICtx->wptMutex);
5825
5826 /*Return Success*/
5827 return WDI_ProcessRequest( pWDICtx, pEventData );
5828
5829}/*WDI_MainStart*/
5830
5831/**
5832 @brief Main FSM Response function for state INIT
5833
Jeff Johnsone7245742012-09-05 17:12:55 -07005834
5835 @param pWDICtx: pointer to the WLAN DAL context
5836 pEventData: pointer to the event information structure
5837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 @see
5839 @return Result of the function call
5840*/
5841WDI_Status
5842WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005843(
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 WDI_ControlBlockType* pWDICtx,
5845 WDI_EventInfoType* pEventData
5846)
5847{
5848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005852
5853 /*Return Success*/
5854 return WDI_STATUS_E_NOT_ALLOWED;
5855}/* WDI_MainRspInit */
5856
5857/**
5858 @brief Main FSM Close function for all states except BUSY
5859
Jeff Johnsone7245742012-09-05 17:12:55 -07005860
5861 @param pWDICtx: pointer to the WLAN DAL context
5862 pEventData: pointer to the event information structure
5863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 @see
5865 @return Result of the function call
5866*/
5867WDI_Status
5868WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005869(
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 WDI_ControlBlockType* pWDICtx,
5871 WDI_EventInfoType* pEventData
5872)
5873{
5874
5875 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 ----------------------------------------------------------------------*/
5878 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5879 {
5880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 pWDICtx, pEventData);
5883 return WDI_STATUS_E_FAILURE;
5884 }
5885
5886 /*Return Success*/
5887 return WDI_ProcessRequest( pWDICtx, pEventData );
5888
5889}/*WDI_MainClose*/
5890/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005892--------------------------------------------------------------------------*/
5893/**
5894 @brief Main FSM Start function for state STARTED
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
5897 @param pWDICtx: pointer to the WLAN DAL context
5898 pEventData: pointer to the event information structure
5899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 @see
5901 @return Result of the function call
5902*/
5903WDI_Status
5904WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005905(
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 WDI_ControlBlockType* pWDICtx,
5907 WDI_EventInfoType* pEventData
5908)
5909{
5910 WDI_StartRspCb wdiStartRspCb = NULL;
5911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5912
5913 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ----------------------------------------------------------------------*/
5916 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5917 {
5918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005919 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005920 pWDICtx, pEventData);
5921 return WDI_STATUS_E_FAILURE;
5922 }
5923
5924 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 ----------------------------------------------------------------------*/
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005928 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005929
5930 wpalMutexAcquire(&pWDICtx->wptMutex);
5931
5932 /*Transition back to started because the post function transitioned us to
5933 busy*/
5934 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5935
5936 /*Check to see if any request is pending*/
5937 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005938
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 wpalMutexRelease(&pWDICtx->wptMutex);
5940
5941 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5943
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 /*Notify UMAC*/
5945 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5946
5947 /*Return Success*/
5948 return WDI_STATUS_SUCCESS;
5949
5950}/*WDI_MainStartStarted*/
5951
5952/**
5953 @brief Main FSM Stop function for state STARTED
5954
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
5956 @param pWDICtx: pointer to the WLAN DAL context
5957 pEventData: pointer to the event information structure
5958
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 @see
5960 @return Result of the function call
5961*/
5962WDI_Status
5963WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005964(
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 WDI_ControlBlockType* pWDICtx,
5966 WDI_EventInfoType* pEventData
5967)
5968{
5969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 ----------------------------------------------------------------------*/
5972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5973 {
5974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 pWDICtx, pEventData);
5977 return WDI_STATUS_E_FAILURE;
5978 }
5979
5980 /*State at this point is BUSY - because we enter this state before posting
5981 an event to the FSM in order to prevent potential race conditions*/
5982
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5984 "Processing stop request in FSM");
5985
5986 /*Return Success*/
5987 return WDI_ProcessRequest( pWDICtx, pEventData );
5988
5989}/*WDI_MainStopStarted*/
5990/**
5991 @brief Main FSM Request function for state started
5992
Jeff Johnsone7245742012-09-05 17:12:55 -07005993
5994 @param pWDICtx: pointer to the WLAN DAL context
5995 pEventData: pointer to the event information structure
5996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 @see
5998 @return Result of the function call
5999*/
6000WDI_Status
6001WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006002(
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 WDI_ControlBlockType* pWDICtx,
6004 WDI_EventInfoType* pEventData
6005)
6006{
6007
6008 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 ----------------------------------------------------------------------*/
6011 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6012 {
6013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 pWDICtx, pEventData);
6016 return WDI_STATUS_E_FAILURE;
6017 }
6018
6019 /*State at this point is BUSY - because we enter this state before posting
6020 an event to the FSM in order to prevent potential race conditions*/
6021
6022 /*Return Success*/
6023 return WDI_ProcessRequest( pWDICtx, pEventData );
6024
6025}/*WDI_MainReqStarted*/
6026
6027/**
6028 @brief Main FSM Response function for all states except INIT
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030
6031 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006032 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006033
Jeff Johnson295189b2012-06-20 16:38:30 -07006034 @see
6035 @return Result of the function call
6036*/
6037WDI_Status
6038WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006039(
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 WDI_ControlBlockType* pWDICtx,
6041 WDI_EventInfoType* pEventData
6042)
6043{
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 wpt_boolean expectedResponse;
6046
6047 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 ----------------------------------------------------------------------*/
6050 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6051 {
6052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 pWDICtx, pEventData);
6055 return WDI_STATUS_E_FAILURE;
6056 }
6057
6058 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6059 {
6060 /* we received an expected response */
6061 expectedResponse = eWLAN_PAL_TRUE;
6062
6063 /*We expect that we will transition to started after this processing*/
6064 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6065
6066 /* we are no longer expecting a response */
6067 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6068 }
6069 else
6070 {
6071 /* we received an indication or unexpected response */
6072 expectedResponse = eWLAN_PAL_FALSE;
6073 /* for indications no need to update state from what it is right
6074 now, unless it explicitly does it in the indication handler (say
6075 for device failure ind) */
6076 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6077 }
6078
6079 /*Process the response and indication */
6080 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6081
6082 /*Lock the CB as we are about to do a state transition*/
6083 wpalMutexAcquire(&pWDICtx->wptMutex);
6084
6085 /*Transition to the expected state after the response processing
6086 - this should always be started state with the following exceptions:
6087 1. processing of a failed start response
6088 2. device failure detected while processing response
6089 3. stop response received*/
6090 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 /*Dequeue request that may have been queued while we were waiting for the
6093 response */
6094 if ( expectedResponse )
6095 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 wpalMutexRelease(&pWDICtx->wptMutex);
6100
6101 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103
6104}/*WDI_MainRsp*/
6105
6106/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006108--------------------------------------------------------------------------*/
6109/**
6110 @brief Main FSM Stop function for state STOPPED
6111
Jeff Johnsone7245742012-09-05 17:12:55 -07006112
6113 @param pWDICtx: pointer to the WLAN DAL context
6114 pEventData: pointer to the event information structure
6115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 @see
6117 @return Result of the function call
6118*/
6119WDI_Status
6120WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006121(
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 WDI_ControlBlockType* pWDICtx,
6123 WDI_EventInfoType* pEventData
6124)
6125{
6126 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 ----------------------------------------------------------------------*/
6129 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6130 {
6131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 pWDICtx, pEventData);
6134 return WDI_STATUS_E_FAILURE;
6135 }
6136
6137 /*We should normally not get a STOP request if we are already stopped
6138 since we should normally be stopped by the UMAC. However in some
6139 error situations we put ourselves in the stopped state without the
6140 UMAC knowing, so when we get a STOP request in this state we still
6141 process it since we need to clean up the underlying state */
6142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6143 "Processing stop request while stopped in FSM");
6144
6145 /*Return Success*/
6146 return WDI_ProcessRequest( pWDICtx, pEventData );
6147
6148}/*WDI_MainStopStopped*/
6149
6150/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006152--------------------------------------------------------------------------*/
6153/**
6154 @brief Main FSM Start function for state BUSY
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
6157 @param pWDICtx: pointer to the WLAN DAL context
6158 pEventData: pointer to the event information structure
6159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 @see
6161 @return Result of the function call
6162*/
6163WDI_Status
6164WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006165(
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 WDI_ControlBlockType* pWDICtx,
6167 WDI_EventInfoType* pEventData
6168)
6169{
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6174 {
6175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 pWDICtx, pEventData);
6178 return WDI_STATUS_E_FAILURE;
6179 }
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6185 "WDI Busy state - queue start request");
6186
6187 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006189
6190 /*Return Success*/
6191 return WDI_STATUS_PENDING;
6192}/*WDI_MainStartBusy*/
6193
6194/**
6195 @brief Main FSM Stop function for state BUSY
6196
Jeff Johnsone7245742012-09-05 17:12:55 -07006197
6198 @param pWDICtx: pointer to the WLAN DAL context
6199 pEventData: pointer to the event information structure
6200
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 @see
6202 @return Result of the function call
6203*/
6204WDI_Status
6205WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006206(
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 WDI_ControlBlockType* pWDICtx,
6208 WDI_EventInfoType* pEventData
6209)
6210{
6211 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 ----------------------------------------------------------------------*/
6214 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6215 {
6216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 pWDICtx, pEventData);
6219 return WDI_STATUS_E_FAILURE;
6220 }
6221
6222 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 ----------------------------------------------------------------------*/
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6226 "WDI Busy state - queue stop request");
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231}/*WDI_MainStopBusy*/
6232
6233/**
6234 @brief Main FSM Request function for state BUSY
6235
Jeff Johnsone7245742012-09-05 17:12:55 -07006236
6237 @param pWDICtx: pointer to the WLAN DAL context
6238 pEventData: pointer to the event information structure
6239
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 @see
6241 @return Result of the function call
6242*/
6243WDI_Status
6244WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006245(
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 WDI_ControlBlockType* pWDICtx,
6247 WDI_EventInfoType* pEventData
6248)
6249{
6250 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 ----------------------------------------------------------------------*/
6253 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6254 {
6255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 pWDICtx, pEventData);
6258 return WDI_STATUS_E_FAILURE;
6259 }
6260
6261 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ----------------------------------------------------------------------*/
6264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6265 "WDI Busy state - queue request %d because waiting for response %d",
6266 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6267
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006270
Jeff Johnson295189b2012-06-20 16:38:30 -07006271}/*WDI_MainReqBusy*/
6272/**
6273 @brief Main FSM Close function for state BUSY
6274
Jeff Johnsone7245742012-09-05 17:12:55 -07006275
6276 @param pWDICtx: pointer to the WLAN DAL context
6277 pEventData: pointer to the event information structure
6278
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 @see
6280 @return Result of the function call
6281*/
6282WDI_Status
6283WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006284(
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 WDI_ControlBlockType* pWDICtx,
6286 WDI_EventInfoType* pEventData
6287)
6288{
6289 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 ----------------------------------------------------------------------*/
6292 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6293 {
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 pWDICtx, pEventData);
6297 return WDI_STATUS_E_FAILURE;
6298 }
6299
6300 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 ----------------------------------------------------------------------*/
6303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6304 "WDI Busy state - queue close request");
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309}/*WDI_MainCloseBusy*/
6310
6311/**
6312 @brief Main FSM Shutdown function for INIT & STARTED states
6313
6314
6315 @param pWDICtx: pointer to the WLAN DAL context
6316 pEventData: pointer to the event information structure
6317
6318 @see
6319 @return Result of the function call
6320*/
6321WDI_Status
6322WDI_MainShutdown
6323(
6324 WDI_ControlBlockType* pWDICtx,
6325 WDI_EventInfoType* pEventData
6326)
6327{
6328 /*--------------------------------------------------------------------
6329 Sanity Check
6330 ----------------------------------------------------------------------*/
6331 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6332 {
6333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6334 "Invalid parameters on Main Start %x %x",
6335 pWDICtx, pEventData);
6336 return WDI_STATUS_E_FAILURE;
6337 }
6338
6339 /*State at this point is BUSY - because we enter this state before posting
6340 an event to the FSM in order to prevent potential race conditions*/
6341
6342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6343 "Processing shutdown request in FSM");
6344
6345 /*Return Success*/
6346 return WDI_ProcessRequest( pWDICtx, pEventData );
6347
6348}/*WDI_MainShutdown*/
6349
6350/**
6351 @brief Main FSM Shutdown function for BUSY state
6352
6353
6354 @param pWDICtx: pointer to the WLAN DAL context
6355 pEventData: pointer to the event information structure
6356
6357 @see
6358 @return Result of the function call
6359*/
6360WDI_Status
6361WDI_MainShutdownBusy
6362(
6363 WDI_ControlBlockType* pWDICtx,
6364 WDI_EventInfoType* pEventData
6365)
6366{
6367 /*--------------------------------------------------------------------
6368 Sanity Check
6369 ----------------------------------------------------------------------*/
6370 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6371 {
6372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6373 "Invalid parameters on Main Start %x %x",
6374 pWDICtx, pEventData);
6375 return WDI_STATUS_E_FAILURE;
6376 }
6377
6378 /* If you are waiting for a HAL response at this stage, you are not
6379 * going to get it. Riva is already shutdown/crashed.
6380 */
6381 wpalTimerStop(&gWDICb.wptResponseTimer);
6382
6383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6384 "Processing shutdown request in FSM: Busy state ");
6385
6386 return WDI_ProcessRequest( pWDICtx, pEventData );
6387
6388}/*WDI_MainShutdownBusy*/
6389
6390
Jeff Johnsone7245742012-09-05 17:12:55 -07006391/*=======================================================================
6392
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395*=======================================================================*/
6396
6397/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006399========================================================================*/
6400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
6404 @param pWDICtx: pointer to the WLAN DAL context
6405 pEventData: pointer to the event information structure
6406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 @see
6408 @return Result of the function call
6409*/
6410WDI_Status
6411WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006412(
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 WDI_ControlBlockType* pWDICtx,
6414 WDI_EventInfoType* pEventData
6415)
6416{
6417 WDI_StartReqParamsType* pwdiStartParams = NULL;
6418 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 wpt_uint16 usDataOffset = 0;
6421 wpt_uint16 usSendSize = 0;
6422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 tHalMacStartReqMsg halStartReq;
6424 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6426
6427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 -------------------------------------------------------------------------*/
6430 if (( NULL == pEventData ) ||
6431 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6432 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6433 {
6434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 }
6439
6440 /*-----------------------------------------------------------------------
6441 Get message buffer
6442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 pwdiStartParams->usConfigBufferLen;
6445
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006447 usLen,
6448 &pSendBuffer, &usDataOffset, &usSendSize))||
6449 ( usSendSize < (usDataOffset + usLen )))
6450 {
6451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6452 "Unable to get send buffer in start req %x %x %x",
6453 pEventData, pwdiStartParams, wdiStartRspCb);
6454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 }
6457
6458 /*-----------------------------------------------------------------------
6459 Fill in the message
6460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006461 halStartReq.startReqParams.driverType =
6462 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
Jeff Johnsone7245742012-09-05 17:12:55 -07006464 halStartReq.startReqParams.uConfigBufferLen =
6465 pwdiStartParams->usConfigBufferLen;
6466 wpalMemoryCopy( pSendBuffer+usDataOffset,
6467 &halStartReq.startReqParams,
6468 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006469
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 usDataOffset += sizeof(halStartReq.startReqParams);
6471 wpalMemoryCopy( pSendBuffer+usDataOffset,
6472 pwdiStartParams->pConfigBuffer,
6473 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006474
6475 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006476 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006477
6478 /*Save Low Level Ind CB and associated user data - it will be used further
6479 on when an indication is coming from the lower MAC*/
6480 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006482
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006485 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490
Jeff Johnson295189b2012-06-20 16:38:30 -07006491}/*WDI_ProcessStartReq*/
6492
6493/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006496
6497 @param pWDICtx: pointer to the WLAN DAL context
6498 pEventData: pointer to the event information structure
6499
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 @see
6501 @return Result of the function call
6502*/
6503WDI_Status
6504WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006505(
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 WDI_ControlBlockType* pWDICtx,
6507 WDI_EventInfoType* pEventData
6508)
6509{
6510 WDI_StopReqParamsType* pwdiStopParams = NULL;
6511 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 wpt_uint16 usDataOffset = 0;
6514 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006515 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6518
6519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 -------------------------------------------------------------------------*/
6522 if (( NULL == pEventData ) ||
6523 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6524 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6525 {
6526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 }
6531
6532 /*-----------------------------------------------------------------------
6533 Get message buffer
6534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 sizeof(halStopReq.stopReqParams),
6537 &pSendBuffer, &usDataOffset, &usSendSize))||
6538 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6539 {
6540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6541 "Unable to get send buffer in stop req %x %x %x",
6542 pEventData, pwdiStopParams, wdiStopRspCb);
6543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 }
6546
6547 /*-----------------------------------------------------------------------
6548 Fill in the message
6549 -----------------------------------------------------------------------*/
6550 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6551 pwdiStopParams->wdiStopReason);
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 wpalMemoryCopy( pSendBuffer+usDataOffset,
6554 &halStopReq.stopReqParams,
6555 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006556
6557 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006559
6560 /*! TO DO: stop the data services */
6561 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6562 {
6563 /*Stop the STA Table !UT- check this logic again
6564 It is safer to do it here than on the response - because a stop is imminent*/
6565 WDI_STATableStop(pWDICtx);
6566
6567 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006568 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6569 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 {
6571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6572 "WDI Init failed to reset power state event");
6573
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 return VOS_STATUS_E_FAILURE;
6576 }
6577 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08006578 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6579 if( eWLAN_PAL_STATUS_SUCCESS != status )
6580 {
6581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6582 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6583 WDI_ASSERT(0);
6584 return WDI_STATUS_E_FAILURE;
6585 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006589 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6590 WDI_SET_POWER_STATE_TIMEOUT);
6591 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006592 {
6593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6594 "WDI Init failed to wait on an event");
6595
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 return VOS_STATUS_E_FAILURE;
6598 }
6599 }
6600
6601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6606
6607}/*WDI_ProcessStopReq*/
6608
6609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
6613 @param pWDICtx: pointer to the WLAN DAL context
6614 pEventData: pointer to the event information structure
6615
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 @see
6617 @return Result of the function call
6618*/
6619WDI_Status
6620WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006621(
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 WDI_ControlBlockType* pWDICtx,
6623 WDI_EventInfoType* pEventData
6624)
6625{
Jeff Johnsone7245742012-09-05 17:12:55 -07006626 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6628
6629 /*Lock control block for cleanup*/
6630 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006631
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 /*Clear all pending request*/
6633 WDI_ClearPendingRequests(pWDICtx);
6634
6635 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006636 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006637
6638 /* Close Data transport*/
6639 /* FTM mode does not open Data Path */
6640 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6641 {
6642 WDTS_Close(pWDICtx);
6643 }
6644
6645 /*Close the STA Table !UT- check this logic again*/
6646 WDI_STATableClose(pWDICtx);
6647
6648 /*close the PAL */
6649 wptStatus = wpalClose(pWDICtx->pPALContext);
6650 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6651 {
6652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6653 "Failed to wpal Close %d", wptStatus);
6654 WDI_ASSERT(0);
6655 }
6656
6657 /*Transition back to init state*/
6658 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6659
6660 wpalMutexRelease(&pWDICtx->wptMutex);
6661
6662 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006663 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006664
Jeff Johnsone7245742012-09-05 17:12:55 -07006665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006666}/*WDI_ProcessCloseReq*/
6667
6668
6669/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006671===========================================================================*/
6672
6673/**
6674 @brief Process Init Scan Request function (called when Main FSM
6675 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006676
6677 @param pWDICtx: pointer to the WLAN DAL context
6678 pEventData: pointer to the event information structure
6679
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 @see
6681 @return Result of the function call
6682*/
6683WDI_Status
6684WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006685(
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 WDI_ControlBlockType* pWDICtx,
6687 WDI_EventInfoType* pEventData
6688)
6689{
6690 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6691 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 wpt_uint16 usDataOffset = 0;
6694 wpt_uint16 usSendSize = 0;
6695 wpt_uint8 i = 0;
6696
6697 tHalInitScanReqMsg halInitScanReqMsg;
6698
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 * It shold be removed once host and riva changes are in sync*/
6701 tHalInitScanConReqMsg halInitScanConReqMsg;
6702
6703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6704
6705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 -------------------------------------------------------------------------*/
6708 if (( NULL == pEventData ) ||
6709 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6710 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6711 {
6712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006716 }
6717
6718#if 0
6719 wpalMutexAcquire(&pWDICtx->wptMutex);
6720 /*-----------------------------------------------------------------------
6721 Check to see if SCAN is already in progress - if so reject the req
6722 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 -----------------------------------------------------------------------*/
6725 if ( pWDICtx->bScanInProgress )
6726 {
6727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6728 "Scan is already in progress - subsequent scan is not allowed"
6729 " until the first scan completes");
6730
6731 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 }
6734
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6736 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006737
6738 wpalMutexRelease(&pWDICtx->wptMutex);
6739#endif
Viral Modid86bde22012-12-10 13:09:21 -08006740 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 * It shold be removed once host and riva changes are in sync*/
6744 /*-----------------------------------------------------------------------
6745 Get message buffer
6746 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 sizeof(halInitScanConReqMsg.initScanParams),
6749 &pSendBuffer, &usDataOffset, &usSendSize))||
6750 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6751 {
6752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6753 "Unable to get send buffer in init scan req %x %x %x",
6754 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 }
6758
6759
6760 /*-----------------------------------------------------------------------
6761 Fill in the message
6762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6765
6766 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6767 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6775
6776 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6777 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6778
6779#ifdef WLAN_FEATURE_P2P
6780 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6781 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6782#endif
6783
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6786
6787 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6788 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6791 }
6792
Jeff Johnsone7245742012-09-05 17:12:55 -07006793 wpalMemoryCopy( pSendBuffer+usDataOffset,
6794 &halInitScanConReqMsg.initScanParams,
6795 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 }
6797 else
6798 {
6799 /*-----------------------------------------------------------------------
6800 Get message buffer
6801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 sizeof(halInitScanReqMsg.initScanParams),
6804 &pSendBuffer, &usDataOffset, &usSendSize))||
6805 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6806 {
6807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6808 "Unable to get send buffer in init scan req %x %x %x",
6809 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 }
6813
6814
6815 /*-----------------------------------------------------------------------
6816 Fill in the message
6817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6820
6821 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6822 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6823
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006827 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6830
6831 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6832 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6836
6837 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6838 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6841 }
6842
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 wpalMemoryCopy( pSendBuffer+usDataOffset,
6844 &halInitScanReqMsg.initScanParams,
6845 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 }
6847
6848 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006850
6851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6856
6857}/*WDI_ProcessInitScanReq*/
6858
6859/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006862
6863 @param pWDICtx: pointer to the WLAN DAL context
6864 pEventData: pointer to the event information structure
6865
Jeff Johnson295189b2012-06-20 16:38:30 -07006866 @see
6867 @return Result of the function call
6868*/
6869WDI_Status
6870WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006871(
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 WDI_ControlBlockType* pWDICtx,
6873 WDI_EventInfoType* pEventData
6874)
6875{
6876 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6877 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 wpt_uint16 usDataOffset = 0;
6880 wpt_uint16 usSendSize = 0;
6881
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6884
6885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 -------------------------------------------------------------------------*/
6888 if (( NULL == pEventData ) ||
6889 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6890 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6891 {
6892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 }
6897
6898#if 0
6899 wpalMutexAcquire(&pWDICtx->wptMutex);
6900 /*-----------------------------------------------------------------------
6901 Check to see if SCAN is already in progress - start scan is only
6902 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006905 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006906 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6907 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6908 {
6909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6910 "Scan start not allowed in this state %d %d",
6911 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006912
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006915 }
6916
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918
6919 wpalMutexRelease(&pWDICtx->wptMutex);
6920#endif
6921
6922 /*-----------------------------------------------------------------------
6923 Get message buffer
6924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 sizeof(halStartScanReqMsg.startScanParams),
6927 &pSendBuffer, &usDataOffset, &usSendSize))||
6928 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6929 {
6930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6931 "Unable to get send buffer in start scan req %x %x %x",
6932 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 }
6936
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 wpalMemoryCopy( pSendBuffer+usDataOffset,
6940 &halStartScanReqMsg.startScanParams,
6941 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
6943 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945
6946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6951}/*WDI_ProcessStartScanReq*/
6952
6953
6954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006957
6958 @param pWDICtx: pointer to the WLAN DAL context
6959 pEventData: pointer to the event information structure
6960
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 @see
6962 @return Result of the function call
6963*/
6964WDI_Status
6965WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006966(
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 WDI_ControlBlockType* pWDICtx,
6968 WDI_EventInfoType* pEventData
6969)
6970{
6971 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6972 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 wpt_uint16 usDataOffset = 0;
6975 wpt_uint16 usSendSize = 0;
6976
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6979
6980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 -------------------------------------------------------------------------*/
6983 if (( NULL == pEventData ) ||
6984 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6985 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6986 {
6987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 }
6992
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6994 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 * forwarded to HAL and result in hang*/
6996#if 0
6997 wpalMutexAcquire(&pWDICtx->wptMutex);
6998 /*-----------------------------------------------------------------------
6999 Check to see if SCAN is already in progress - end scan is only
7000 allowed when a scan is ongoing and the state of the scan procedure
7001 is started
7002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7005 {
7006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7007 "End start not allowed in this state %d %d",
7008 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007009
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 }
7013
Jeff Johnsone7245742012-09-05 17:12:55 -07007014 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007015
7016 wpalMutexRelease(&pWDICtx->wptMutex);
7017#endif
7018
7019 /*-----------------------------------------------------------------------
7020 Get message buffer
7021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 sizeof(halEndScanReqMsg.endScanParams),
7024 &pSendBuffer, &usDataOffset, &usSendSize))||
7025 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7026 {
7027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7028 "Unable to get send buffer in start scan req %x %x %x",
7029 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 }
7033
7034 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7035
Jeff Johnsone7245742012-09-05 17:12:55 -07007036 wpalMemoryCopy( pSendBuffer+usDataOffset,
7037 &halEndScanReqMsg.endScanParams,
7038 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
7040 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007042
7043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7048}/*WDI_ProcessEndScanReq*/
7049
7050
7051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007054
7055 @param pWDICtx: pointer to the WLAN DAL context
7056 pEventData: pointer to the event information structure
7057
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 @see
7059 @return Result of the function call
7060*/
7061WDI_Status
7062WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007063(
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 WDI_ControlBlockType* pWDICtx,
7065 WDI_EventInfoType* pEventData
7066)
7067{
7068 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7069 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 wpt_uint16 usDataOffset = 0;
7072 wpt_uint16 usSendSize = 0;
7073 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007074 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7077
7078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 -------------------------------------------------------------------------*/
7081 if (( NULL == pEventData ) ||
7082 ( NULL == pEventData->pEventData) ||
7083 ( NULL == pEventData->pCBfnc))
7084 {
7085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 }
7090
7091 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7092 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7094 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 * forwarded to HAL and result in hang*/
7096#if 0
7097 wpalMutexAcquire(&pWDICtx->wptMutex);
7098 /*-----------------------------------------------------------------------
7099 Check to see if SCAN is already in progress
7100 Finish scan gets invoked any scan states. ie. abort scan
7101 It should be allowed in any states.
7102 -----------------------------------------------------------------------*/
7103 if ( !pWDICtx->bScanInProgress )
7104 {
7105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7106 "Finish start not allowed in this state %d",
7107 pWDICtx->bScanInProgress );
7108
7109 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007111 }
7112
7113 /*-----------------------------------------------------------------------
7114 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7118 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 wpalMutexRelease(&pWDICtx->wptMutex);
7120#endif
7121
7122 if ( pWDICtx->bInBmps )
7123 {
7124 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007125 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7126 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7127 {
7128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7129 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7130 WDI_ASSERT(0);
7131 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 }
7133
7134 /*-----------------------------------------------------------------------
7135 Get message buffer
7136 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007137 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 sizeof(halFinishScanReqMsg.finishScanParams),
7139 &pSendBuffer, &usDataOffset, &usSendSize))||
7140 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7141 {
7142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7143 "Unable to get send buffer in start scan req %x %x %x",
7144 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 }
7148
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7151
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7154
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7157
7158 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7159 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7160
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7167
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7170
7171 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7172 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7175 }
7176
7177 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7178 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7179
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 wpalMemoryCopy( pSendBuffer+usDataOffset,
7181 &halFinishScanReqMsg.finishScanParams,
7182 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007183
7184 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007186
7187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7192}/*WDI_ProcessFinishScanReq*/
7193
7194
7195/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007197==========================================================================*/
7198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 @brief Process BSS Join for a given Session
7200
7201 @param pWDICtx: pointer to the WLAN DAL context
7202 pEventData: pointer to the event information structure
7203
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 @see
7205 @return Result of the function call
7206*/
7207WDI_Status
7208WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007209(
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 WDI_ControlBlockType* pWDICtx,
7211 WDI_JoinReqParamsType* pwdiJoinParams,
7212 WDI_JoinRspCb wdiJoinRspCb,
7213 void* pUserData
7214)
7215{
7216 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpt_uint16 usDataOffset = 0;
7219 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7224
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007225 wpalMutexAcquire(&pWDICtx->wptMutex);
7226
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 /*------------------------------------------------------------------------
7228 Check to see if we have any session with this BSSID already stored, we
7229 should not
7230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7232 pwdiJoinParams->wdiReqInfo.macBSSID,
7233 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007234
7235 if ( NULL != pBSSSes )
7236 {
7237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007238 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7239 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007240
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007241 /*reset the bAssociationInProgress otherwise the next
7242 *join request will be queued*/
7243 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7244 wpalMutexRelease(&pWDICtx->wptMutex);
7245 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 }
7247
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 if ( NULL == pBSSSes )
7253 {
7254
7255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7256 "DAL has no free sessions - cannot run another join");
7257
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007258 /*reset the bAssociationInProgress otherwise the next
7259 *join request will be queued*/
7260 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 }
7264
7265 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7267 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 WDI_MAC_ADDR_LEN);
7269
7270 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 wpalMutexRelease(&pWDICtx->wptMutex);
7275
7276 /*-----------------------------------------------------------------------
7277 Get message buffer
7278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 sizeof(halJoinReqMsg.joinReqParams),
7281 &pSendBuffer, &usDataOffset, &usSendSize))||
7282 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7283 {
7284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7285 "Unable to get send buffer in join req %x %x %x",
7286 pUserData, pwdiJoinParams, wdiJoinRspCb);
7287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 }
7290
7291 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007292 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007293
7294 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 pwdiJoinParams->wdiReqInfo.macSTASelf,
7296 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007297
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7300
7301 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7302
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007303#ifdef WLAN_FEATURE_VOWIFI
7304 halJoinReqMsg.joinReqParams.maxTxPower =
7305 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7306#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7309#endif
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7313 wdiSecondaryChannelOffset);
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 wpalMemoryCopy( pSendBuffer+usDataOffset,
7316 &halJoinReqMsg.joinReqParams,
7317 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
7322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7326 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007327
7328}/*WDI_ProcessBSSSessionJoinReq*/
7329
7330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007333
7334 @param pWDICtx: pointer to the WLAN DAL context
7335 pEventData: pointer to the event information structure
7336
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 @see
7338 @return Result of the function call
7339*/
7340WDI_Status
7341WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007342(
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 WDI_ControlBlockType* pWDICtx,
7344 WDI_EventInfoType* pEventData
7345)
7346{
7347 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7348 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7349 WDI_JoinRspCb wdiJoinRspCb = NULL;
7350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7351
7352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 -------------------------------------------------------------------------*/
7355 if (( NULL == pEventData ) ||
7356 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7357 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7358 {
7359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007364
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 /*-------------------------------------------------------------------------
7366 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 -------------------------------------------------------------------------*/
7369 wpalMutexAcquire(&pWDICtx->wptMutex);
7370
7371 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7372 {
7373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7374 "Association is currently in progress, queueing new join req");
7375
7376 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 pwdiJoinParams->wdiReqInfo.macBSSID);
7379
7380 wpalMutexRelease(&pWDICtx->wptMutex);
7381
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 }
7384
7385 /*Starting a new association */
7386 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7387 wpalMutexRelease(&pWDICtx->wptMutex);
7388
7389 /*Process the Join Request*/
7390 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7391 wdiJoinRspCb,pEventData->pUserData);
7392
7393}/*WDI_ProcessJoinReq*/
7394
7395
7396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007399
7400 @param pWDICtx: pointer to the WLAN DAL context
7401 pEventData: pointer to the event information structure
7402
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 @see
7404 @return Result of the function call
7405*/
7406WDI_Status
7407WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007408(
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 WDI_ControlBlockType* pWDICtx,
7410 WDI_EventInfoType* pEventData
7411)
7412{
7413 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7414 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 wpt_uint16 uMsgSize = 0;
7418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 wpt_uint16 usDataOffset = 0;
7420 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7425
7426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 -------------------------------------------------------------------------*/
7429 if (( NULL == pEventData ) ||
7430 ( NULL == pEventData->pEventData ) ||
7431 ( NULL == pEventData->pCBfnc ))
7432 {
7433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 }
7438
7439 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7440 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7441 /*-------------------------------------------------------------------------
7442 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 -------------------------------------------------------------------------*/
7445 wpalMutexAcquire(&pWDICtx->wptMutex);
7446
7447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7451 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7452 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007453
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 {
7456#ifdef WLAN_FEATURE_VOWIFI_11R
7457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 if ( NULL == pBSSSes )
7462 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007463
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7465 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007466
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007470
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7473 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007475
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7479#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 * Request in case of IBSS*/
7482 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7483 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7484 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7485 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7486 {
7487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 if ( NULL == pBSSSes )
7492 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007493
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7495 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007500
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7503 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007505
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7509 }
7510 else
7511 {
7512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7514 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7515 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7516
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 /* for IBSS testing */
7518 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 }
7521#endif
7522 }
7523
7524 /*------------------------------------------------------------------------
7525 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 ------------------------------------------------------------------------*/
7528 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7529 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7531 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7532 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7533 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007534
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007536
7537 wpalMutexRelease(&pWDICtx->wptMutex);
7538
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 }
7541
7542 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7544 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 sizeof(pWDICtx->wdiCachedConfigBssReq));
7546
7547 wpalMutexRelease(&pWDICtx->wptMutex);
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7550#ifdef WLAN_FEATURE_11AC
7551 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007552 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 else
7554#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007555 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007556
7557 /*-----------------------------------------------------------------------
7558 Get message buffer
7559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7562 ( usSendSize < (usDataOffset + uMsgSize )))
7563 {
7564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7565 "Unable to get send buffer in config bss req %x %x %x",
7566 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 }
7570
7571 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007572#ifdef WLAN_FEATURE_11AC
7573 if (WDI_getFwWlanFeatCaps(DOT11AC))
7574 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7575 &pwdiConfigBSSParams->wdiReqInfo);
7576 else
7577#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 &pwdiConfigBSSParams->wdiReqInfo);
7580
7581 /* Need to fill in the STA Index to invalid, since at this point we have not
7582 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007584
7585 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7587
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007588#ifdef WLAN_FEATURE_11AC
7589 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7590 wpalMemoryCopy( pSendBuffer+usDataOffset,
7591 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7592 uMsgSize);
7593 }else
7594#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 wpalMemoryCopy( pSendBuffer+usDataOffset,
7596 &halConfigBssReqMsg.uBssParams.configBssParams,
7597 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007598
7599 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
7602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7606 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 WDI_CONFIG_BSS_RESP);
7608
7609}/*WDI_ProcessConfigBSSReq*/
7610
7611
7612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007615
7616 @param pWDICtx: pointer to the WLAN DAL context
7617 pEventData: pointer to the event information structure
7618
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 @see
7620 @return Result of the function call
7621*/
7622WDI_Status
7623WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007624(
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 WDI_ControlBlockType* pWDICtx,
7626 WDI_EventInfoType* pEventData
7627)
7628{
7629 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7630 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 wpt_uint16 usDataOffset = 0;
7635 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7640
7641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 -------------------------------------------------------------------------*/
7644 if (( NULL == pEventData ) ||
7645 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7646 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7647 {
7648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007652 }
7653
7654 /*-------------------------------------------------------------------------
7655 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 -------------------------------------------------------------------------*/
7658 wpalMutexAcquire(&pWDICtx->wptMutex);
7659
7660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7664 pwdiDelBSSParams->ucBssIdx,
7665 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007666
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 {
7669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 "%s: BSS does not yet exist. ucBssIdx %d",
7671 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007672
7673 wpalMutexRelease(&pWDICtx->wptMutex);
7674
7675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007677
7678 /*------------------------------------------------------------------------
7679 Check if this BSS is being currently processed or queued,
7680 if queued - queue the new request as well
7681 ------------------------------------------------------------------------*/
7682 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7685 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7686 __func__, pwdiDelBSSParams->ucBssIdx);
7687
7688 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7689
7690 wpalMutexRelease(&pWDICtx->wptMutex);
7691
7692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007694
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 /*-----------------------------------------------------------------------
7696 If we receive a Del BSS request for an association that is already in
7697 progress, it indicates that the assoc has failed => we no longer have
7698 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 -----------------------------------------------------------------------*/
7701 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7702 {
7703 /*We can switch to false here because even if a subsequent Join comes in
7704 it will only be processed when DAL transitions out of BUSY state which
7705 happens when the Del BSS request comes */
7706 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7707
7708 /*Former association is complete - prepare next pending assoc for
7709 processing */
7710 WDI_DequeueAssocRequest(pWDICtx);
7711 }
7712
7713 wpalMutexRelease(&pWDICtx->wptMutex);
7714 /*-----------------------------------------------------------------------
7715 Get message buffer
7716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 sizeof(halBssReqMsg.deleteBssParams),
7719 &pSendBuffer, &usDataOffset, &usSendSize))||
7720 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7721 {
7722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7723 "Unable to get send buffer in start req %x %x %x",
7724 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 }
7728
7729 /*Fill in the message request structure*/
7730
7731 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007732 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 wpalMemoryCopy( pSendBuffer+usDataOffset,
7735 &halBssReqMsg.deleteBssParams,
7736 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007737
7738 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740
Jeff Johnsone7245742012-09-05 17:12:55 -07007741
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7747
Jeff Johnsone7245742012-09-05 17:12:55 -07007748
Jeff Johnson295189b2012-06-20 16:38:30 -07007749}/*WDI_ProcessDelBSSReq*/
7750
7751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007754
7755 @param pWDICtx: pointer to the WLAN DAL context
7756 pEventData: pointer to the event information structure
7757
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 @see
7759 @return Result of the function call
7760*/
7761WDI_Status
7762WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007763(
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 WDI_ControlBlockType* pWDICtx,
7765 WDI_EventInfoType* pEventData
7766)
7767{
7768 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7769 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 wpt_uint16 usDataOffset = 0;
7774 wpt_uint16 usSendSize = 0;
7775 wpt_uint16 uMsgSize = 0;
7776 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007778
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7781
7782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 -------------------------------------------------------------------------*/
7785 if (( NULL == pEventData ) ||
7786 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7787 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7788 {
7789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 }
7794
7795 /*-------------------------------------------------------------------------
7796 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 -------------------------------------------------------------------------*/
7799 wpalMutexAcquire(&pWDICtx->wptMutex);
7800
7801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7805 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7806 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007807
7808 if ( NULL == pBSSSes )
7809 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7811 "%s: Association sequence for this BSS does not yet exist - "
7812 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7813 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007814
7815 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 }
7818
7819 /*------------------------------------------------------------------------
7820 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 ------------------------------------------------------------------------*/
7823 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7824 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7826 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7827 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007828
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007830
7831 wpalMutexRelease(&pWDICtx->wptMutex);
7832
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 }
7835
7836 /*-----------------------------------------------------------------------
7837 If Post Assoc was not yet received - the current association must
7838 be in progress
7839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7842 {
7843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7844 "Association sequence for this BSS association no longer in "
7845 "progress - not allowed");
7846
7847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 }
7850
7851 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 -----------------------------------------------------------------------*/
7854 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7855 {
7856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7857 "Post Assoc not allowed before JOIN - failing request");
7858
7859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 }
7862
7863 wpalMutexRelease(&pWDICtx->wptMutex);
7864
7865 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7866 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7867 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7872 ( usSendSize < (usDataOffset + uMsgSize )))
7873 {
7874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7875 "Unable to get send buffer in start req %x %x %x",
7876 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 }
7880
7881 /*Copy the STA parameters */
7882 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7883 &pwdiPostAssocParams->wdiSTAParams );
7884
7885 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 WDI_STATableFindStaidByAddr(pWDICtx,
7888 pwdiPostAssocParams->wdiSTAParams.macSTA,
7889 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7890 {
7891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7892 "This station does not exist in the WDI Station Table %d");
7893 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007894 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 }
7897
7898 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 pBSSSes->ucBSSIdx;
7901
7902 /*Copy the BSS parameters */
7903 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7904 &pwdiPostAssocParams->wdiBSSParams);
7905
7906 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 WDI_STATableFindStaidByAddr(pWDICtx,
7909 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 {
7912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7913 "This station does not exist in the WDI Station Table %d");
7914 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 }
7917
7918 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 pBSSSes->ucBSSIdx;
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 wpalMemoryCopy( pSendBuffer+usDataOffset,
7924 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7925 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007926
7927 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7930 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7931 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007932
Jeff Johnsone7245742012-09-05 17:12:55 -07007933
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007936
Jeff Johnsone7245742012-09-05 17:12:55 -07007937
7938 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007941
7942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7947
Jeff Johnsone7245742012-09-05 17:12:55 -07007948
Jeff Johnson295189b2012-06-20 16:38:30 -07007949}/*WDI_ProcessPostAssocReq*/
7950
7951/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007954
7955 @param pWDICtx: pointer to the WLAN DAL context
7956 pEventData: pointer to the event information structure
7957
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 @see
7959 @return Result of the function call
7960*/
7961WDI_Status
7962WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007963(
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 WDI_ControlBlockType* pWDICtx,
7965 WDI_EventInfoType* pEventData
7966)
7967{
7968 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7969 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 wpt_uint16 usDataOffset = 0;
7974 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7977
Jeff Johnsone7245742012-09-05 17:12:55 -07007978 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7980
7981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 -------------------------------------------------------------------------*/
7984 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7985 ( NULL == pEventData->pCBfnc ))
7986 {
7987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 }
7992
7993 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7994 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7995 /*-------------------------------------------------------------------------
7996 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 -------------------------------------------------------------------------*/
7999 wpalMutexAcquire(&pWDICtx->wptMutex);
8000
8001 /*------------------------------------------------------------------------
8002 Find the BSS for which the request is made and identify WDI session
8003 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8005 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 &macBSSID))
8007 {
8008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8009 "This station does not exist in the WDI Station Table %d");
8010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 }
8013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8015 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8019 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008020
8021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 }
8024
8025 /*------------------------------------------------------------------------
8026 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 ------------------------------------------------------------------------*/
8029 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8032 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8033 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 }
8039
8040 wpalMutexRelease(&pWDICtx->wptMutex);
8041 /*-----------------------------------------------------------------------
8042 Get message buffer
8043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 sizeof(halDelStaReqMsg.delStaParams),
8046 &pSendBuffer, &usDataOffset, &usSendSize))||
8047 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8048 {
8049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8050 "Unable to get send buffer in start req %x %x %x",
8051 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 }
8055
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8057 wpalMemoryCopy( pSendBuffer+usDataOffset,
8058 &halDelStaReqMsg.delStaParams,
8059 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008060
8061 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063
8064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8069
8070}/*WDI_ProcessDelSTAReq*/
8071
8072
8073/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008075==========================================================================*/
8076/**
8077 @brief Process Set BSS Key Request function (called when Main FSM
8078 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008079
8080 @param pWDICtx: pointer to the WLAN DAL context
8081 pEventData: pointer to the event information structure
8082
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 @see
8084 @return Result of the function call
8085*/
8086WDI_Status
8087WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008088(
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_ControlBlockType* pWDICtx,
8090 WDI_EventInfoType* pEventData
8091)
8092{
8093 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8094 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 wpt_uint16 usDataOffset = 0;
8099 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8102 wpt_uint8 keyIndex = 0;
8103
8104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8105
8106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 -------------------------------------------------------------------------*/
8109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8110 ( NULL == pEventData->pCBfnc ))
8111 {
8112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 }
8117
8118 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8119 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8120 /*-------------------------------------------------------------------------
8121 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 -------------------------------------------------------------------------*/
8124 wpalMutexAcquire(&pWDICtx->wptMutex);
8125
8126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8130 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8131 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008132
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 {
8135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8137 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 }
8142
8143 /*------------------------------------------------------------------------
8144 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 ------------------------------------------------------------------------*/
8147 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8148 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8150 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8151 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008152
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 }
8157
8158
8159 wpalMutexRelease(&pWDICtx->wptMutex);
8160 /*-----------------------------------------------------------------------
8161 Get message buffer
8162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8165 &pSendBuffer, &usDataOffset, &usSendSize))||
8166 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8167 {
8168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8169 "Unable to get send buffer in set bss key req %x %x %x",
8170 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 }
8174
8175 /*-----------------------------------------------------------------------
8176 Copy the Key parameters into the HAL message
8177 -----------------------------------------------------------------------*/
8178
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8183
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8186
8187 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8188 keyIndex++)
8189 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8192 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8193 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8194 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8195 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8196 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8203 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 WDI_MAX_KEY_LENGTH);
8206 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008207
8208 wpalMemoryCopy( pSendBuffer+usDataOffset,
8209 &halSetBssKeyReqMsg.setBssKeyParams,
8210 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008211
8212 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214
8215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8219 wdiSetBSSKeyRspCb, pEventData->pUserData,
8220 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008221
8222}/*WDI_ProcessSetBssKeyReq*/
8223
8224/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008227
8228 @param pWDICtx: pointer to the WLAN DAL context
8229 pEventData: pointer to the event information structure
8230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 @see
8232 @return Result of the function call
8233*/
8234WDI_Status
8235WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008236(
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 WDI_ControlBlockType* pWDICtx,
8238 WDI_EventInfoType* pEventData
8239)
8240{
8241 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8242 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 wpt_uint16 usDataOffset = 0;
8247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8251
8252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 -------------------------------------------------------------------------*/
8255 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8256 ( NULL == pEventData->pCBfnc ))
8257 {
8258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8265 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8266 /*-------------------------------------------------------------------------
8267 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 -------------------------------------------------------------------------*/
8270 wpalMutexAcquire(&pWDICtx->wptMutex);
8271
8272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8276 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8277 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008278
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 {
8281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8283 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008284
8285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 }
8288
8289 /*------------------------------------------------------------------------
8290 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 ------------------------------------------------------------------------*/
8293 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8294 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8296 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8297 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 }
8303
8304
8305 wpalMutexRelease(&pWDICtx->wptMutex);
8306
8307 /*-----------------------------------------------------------------------
8308 Get message buffer
8309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8312 &pSendBuffer, &usDataOffset, &usSendSize))||
8313 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8316 "Unable to get send buffer in set bss key req %x %x %x",
8317 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 }
8321 /*-----------------------------------------------------------------------
8322 Copy the Key parameters into the HAL message
8323 -----------------------------------------------------------------------*/
8324 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8328
8329 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8333
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 wpalMemoryCopy( pSendBuffer+usDataOffset,
8335 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8336 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340
8341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008347}/*WDI_ProcessRemoveBssKeyReq*/
8348
8349/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008352
8353 @param pWDICtx: pointer to the WLAN DAL context
8354 pEventData: pointer to the event information structure
8355
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 @see
8357 @return Result of the function call
8358*/
8359WDI_Status
8360WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008361(
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 WDI_ControlBlockType* pWDICtx,
8363 WDI_EventInfoType* pEventData
8364)
8365{
8366 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8367 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 wpt_uint16 usDataOffset = 0;
8371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8376 wpt_uint8 keyIndex = 0;
8377
8378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8379
8380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 -------------------------------------------------------------------------*/
8383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8384 ( NULL == pEventData->pCBfnc ))
8385 {
8386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8393 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8394 /*-------------------------------------------------------------------------
8395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 -------------------------------------------------------------------------*/
8398 wpalMutexAcquire(&pWDICtx->wptMutex);
8399
8400 /*------------------------------------------------------------------------
8401 Find the BSS for which the request is made and identify WDI session
8402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8404 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 &macBSSID))
8406 {
8407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8408 "This station does not exist in the WDI Station Table %d");
8409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8414 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8417 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8418 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008419
8420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008423
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 /*------------------------------------------------------------------------
8425 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 ------------------------------------------------------------------------*/
8428 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8429 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8431 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8432 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008433
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 }
8438
8439
8440 wpalMutexRelease(&pWDICtx->wptMutex);
8441 /*-----------------------------------------------------------------------
8442 Get message buffer
8443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8446 &pSendBuffer, &usDataOffset, &usSendSize))||
8447 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8448 {
8449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8450 "Unable to get send buffer in set bss key req %x %x %x",
8451 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 }
8455 /*-----------------------------------------------------------------------
8456 Copy the STA Key parameters into the HAL message
8457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8460
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8463
8464 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8465
8466 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8467
8468 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8469
8470#ifdef WLAN_SOFTAP_FEATURE
8471 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8472 keyIndex++)
8473 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8476 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8477 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8478 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8479 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8480 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8487 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAX_KEY_LENGTH);
8490 }
8491#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8494 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8495 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8496 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8497 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8498 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8505 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 WDI_MAX_KEY_LENGTH);
8508#endif
8509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 wpalMemoryCopy( pSendBuffer+usDataOffset,
8511 &halSetStaKeyReqMsg.setStaKeyParams,
8512 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008513
8514 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516
8517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8521 wdiSetSTAKeyRspCb, pEventData->pUserData,
8522 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
8524}/*WDI_ProcessSetSTAKeyReq*/
8525
8526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
8530 @param pWDICtx: pointer to the WLAN DAL context
8531 pEventData: pointer to the event information structure
8532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 @see
8534 @return Result of the function call
8535*/
8536WDI_Status
8537WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008538(
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 WDI_ControlBlockType* pWDICtx,
8540 WDI_EventInfoType* pEventData
8541)
8542{
8543 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8544 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 wpt_uint16 usDataOffset = 0;
8548 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 wpt_macAddr macBSSID;
8551 wpt_uint8 ucCurrentBSSSesIdx;
8552 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8554
8555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 -------------------------------------------------------------------------*/
8558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8559 ( NULL == pEventData->pCBfnc ))
8560 {
8561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 }
8566
8567 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8568 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8569 /*-------------------------------------------------------------------------
8570 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 -------------------------------------------------------------------------*/
8573 wpalMutexAcquire(&pWDICtx->wptMutex);
8574
8575 /*------------------------------------------------------------------------
8576 Find the BSS for which the request is made and identify WDI session
8577 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8579 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 &macBSSID))
8581 {
8582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8583 "This station does not exist in the WDI Station Table %d");
8584 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 }
8587
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8589 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8592 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8593 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008594
8595 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008598
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 /*------------------------------------------------------------------------
8600 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 ------------------------------------------------------------------------*/
8603 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8604 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8606 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8607 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008608
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 }
8613
8614
8615
8616 wpalMutexRelease(&pWDICtx->wptMutex);
8617 /*-----------------------------------------------------------------------
8618 Get message buffer
8619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8622 &pSendBuffer, &usDataOffset, &usSendSize))||
8623 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8624 {
8625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8626 "Unable to get send buffer in set bss key req %x %x %x",
8627 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 }
8631
8632 /*-----------------------------------------------------------------------
8633 Copy the Key parameters into the HAL message
8634 -----------------------------------------------------------------------*/
8635
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8638
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8641
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8644
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8647
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 wpalMemoryCopy( pSendBuffer+usDataOffset,
8649 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8650 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008651
8652 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654
8655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008661
8662}/*WDI_ProcessRemoveSTAKeyReq*/
8663
8664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008667
8668 @param pWDICtx: pointer to the WLAN DAL context
8669 pEventData: pointer to the event information structure
8670
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 @see
8672 @return Result of the function call
8673*/
8674WDI_Status
8675WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008676(
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 WDI_ControlBlockType* pWDICtx,
8678 WDI_EventInfoType* pEventData
8679)
8680{
8681 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8682 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8683 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 wpt_uint16 usDataOffset = 0;
8686 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8691 wpt_uint8 keyIndex = 0;
8692
8693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8694
8695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 -------------------------------------------------------------------------*/
8698 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8699 ( NULL == pEventData->pCBfnc ))
8700 {
8701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8708 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8709 /*-------------------------------------------------------------------------
8710 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 -------------------------------------------------------------------------*/
8713 wpalMutexAcquire(&pWDICtx->wptMutex);
8714
8715 /*------------------------------------------------------------------------
8716 Find the BSS for which the request is made and identify WDI session
8717 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8719 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 &macBSSID))
8721 {
8722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8723 "This station does not exist in the WDI Station Table %d");
8724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8729 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8733 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008734
8735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /*------------------------------------------------------------------------
8740 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 ------------------------------------------------------------------------*/
8743 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8746 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8747 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008748
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 }
8753
8754
8755 wpalMutexRelease(&pWDICtx->wptMutex);
8756 /*-----------------------------------------------------------------------
8757 Get message buffer
8758 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8761 &pSendBuffer, &usDataOffset, &usSendSize))||
8762 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8763 {
8764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8765 "Unable to get send buffer in set bss key req %x %x %x",
8766 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 }
8770 /*-----------------------------------------------------------------------
8771 Copy the STA Key parameters into the HAL message
8772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8775
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8778
8779 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8780
8781 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8782
8783 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8784
8785#ifdef WLAN_SOFTAP_FEATURE
8786 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8787 keyIndex++)
8788 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8791 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8792 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8793 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8794 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8795 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8802 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 WDI_MAX_KEY_LENGTH);
8805 }
8806#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8809 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8810 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8811 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8812 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8813 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8820 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 WDI_MAX_KEY_LENGTH);
8823#endif
8824
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 wpalMemoryCopy( pSendBuffer+usDataOffset,
8826 &halSetStaKeyReqMsg.setStaKeyParams,
8827 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008828
8829 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8836 wdiSetSTAKeyRspCb, pEventData->pUserData,
8837 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008838
8839}/*WDI_ProcessSetSTABcastKeyReq*/
8840
8841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008844
8845 @param pWDICtx: pointer to the WLAN DAL context
8846 pEventData: pointer to the event information structure
8847
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 @see
8849 @return Result of the function call
8850*/
8851WDI_Status
8852WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008853(
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 WDI_ControlBlockType* pWDICtx,
8855 WDI_EventInfoType* pEventData
8856)
8857{
8858 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8859 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8860 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 wpt_uint16 usDataOffset = 0;
8863 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpt_macAddr macBSSID;
8866 wpt_uint8 ucCurrentBSSSesIdx;
8867 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8869
8870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 -------------------------------------------------------------------------*/
8873 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8874 ( NULL == pEventData->pCBfnc ))
8875 {
8876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 }
8881
8882 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8883 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8884 /*-------------------------------------------------------------------------
8885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 -------------------------------------------------------------------------*/
8888 wpalMutexAcquire(&pWDICtx->wptMutex);
8889
8890 /*------------------------------------------------------------------------
8891 Find the BSS for which the request is made and identify WDI session
8892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8894 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 &macBSSID))
8896 {
8897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8898 "This station does not exist in the WDI Station Table %d");
8899 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 }
8902
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8904 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8907 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8908 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008909
8910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008913
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 /*------------------------------------------------------------------------
8915 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 ------------------------------------------------------------------------*/
8918 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8919 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8921 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8922 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008923
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 }
8928
8929
8930
8931 wpalMutexRelease(&pWDICtx->wptMutex);
8932 /*-----------------------------------------------------------------------
8933 Get message buffer
8934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8937 &pSendBuffer, &usDataOffset, &usSendSize))||
8938 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8939 {
8940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8941 "Unable to get send buffer in set bss key req %x %x %x",
8942 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 }
8946
8947 /*-----------------------------------------------------------------------
8948 Copy the Key parameters into the HAL message
8949 -----------------------------------------------------------------------*/
8950
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8953
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8956
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8959
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8962
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 wpalMemoryCopy( pSendBuffer+usDataOffset,
8964 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8965 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008966
8967 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969
8970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008976
8977}/*WDI_ProcessRemoveSTABcastKeyReq*/
8978
8979/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008981==========================================================================*/
8982/**
8983 @brief Process Add TSpec Request function (called when Main FSM
8984 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008985
8986 @param pWDICtx: pointer to the WLAN DAL context
8987 pEventData: pointer to the event information structure
8988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 @see
8990 @return Result of the function call
8991*/
8992WDI_Status
8993WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008994(
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_ControlBlockType* pWDICtx,
8996 WDI_EventInfoType* pEventData
8997)
8998{
8999 WDI_AddTSReqParamsType* pwdiAddTSParams;
9000 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 wpt_uint16 usDataOffset = 0;
9005 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 wpt_macAddr macBSSID;
9008 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009009
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9011
9012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 -------------------------------------------------------------------------*/
9015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9016 ( NULL == pEventData->pCBfnc ))
9017 {
9018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9025 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9026 /*-------------------------------------------------------------------------
9027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 wpalMutexAcquire(&pWDICtx->wptMutex);
9031
9032 /*------------------------------------------------------------------------
9033 Find the BSS for which the request is made and identify WDI session
9034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9036 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 &macBSSID))
9038 {
9039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9040 "This station does not exist in the WDI Station Table %d");
9041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 }
9044
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9046 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9049 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009051
9052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 /*------------------------------------------------------------------------
9057 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 ------------------------------------------------------------------------*/
9060 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9061 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9063 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9064 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009065
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
9070
9071 wpalMutexRelease(&pWDICtx->wptMutex);
9072 /*-----------------------------------------------------------------------
9073 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9077 sizeof(halAddTsParams),
9078 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 &usSendSize))||
9080 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9081 {
9082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9083 "Unable to get send buffer in set bss key req %x %x %x",
9084 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 }
9088
9089 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9090 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9091
9092 //TSPEC IE
9093 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9094 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9125
9126 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9141
9142 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9147
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 wpalMemoryCopy( pSendBuffer+usDataOffset,
9149 &halAddTsParams,
9150 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009151
9152 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154
9155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009161}/*WDI_ProcessAddTSpecReq*/
9162
9163
9164/**
9165 @brief Process Del TSpec Request function (called when Main FSM
9166 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009167
9168 @param pWDICtx: pointer to the WLAN DAL context
9169 pEventData: pointer to the event information structure
9170
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 @see
9172 @return Result of the function call
9173*/
9174WDI_Status
9175WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009176(
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 WDI_ControlBlockType* pWDICtx,
9178 WDI_EventInfoType* pEventData
9179)
9180{
9181 WDI_DelTSReqParamsType* pwdiDelTSParams;
9182 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 wpt_uint16 usDataOffset = 0;
9187 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9190
9191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 -------------------------------------------------------------------------*/
9194 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9195 ( NULL == pEventData->pCBfnc ))
9196 {
9197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 }
9202
9203 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9204 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9205
9206 /*-------------------------------------------------------------------------
9207 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 -------------------------------------------------------------------------*/
9210 wpalMutexAcquire(&pWDICtx->wptMutex);
9211
9212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9216 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9217 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9222 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9223 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9224
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 }
9228
9229 /*------------------------------------------------------------------------
9230 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 ------------------------------------------------------------------------*/
9233 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9234 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9236 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9237 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009238
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 }
9243
9244
9245 wpalMutexRelease(&pWDICtx->wptMutex);
9246 /*-----------------------------------------------------------------------
9247 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9252 &pSendBuffer, &usDataOffset, &usSendSize))||
9253 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9254 {
9255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9256 "Unable to get send buffer in set bss key req %x %x %x",
9257 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 }
9261
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 wpalMemoryCopy( pSendBuffer+usDataOffset,
9263 &pwdiDelTSParams->wdiDelTSInfo,
9264 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009265
9266 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268
9269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9273 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009274}/*WDI_ProcessDelTSpecReq*/
9275
9276/**
9277 @brief Process Update EDCA Params Request function (called when
9278 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009279
9280 @param pWDICtx: pointer to the WLAN DAL context
9281 pEventData: pointer to the event information structure
9282
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 @see
9284 @return Result of the function call
9285*/
9286WDI_Status
9287WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009288(
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 WDI_ControlBlockType* pWDICtx,
9290 WDI_EventInfoType* pEventData
9291)
9292{
9293 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9294 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 wpt_uint16 usDataOffset = 0;
9299 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9302
9303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 -------------------------------------------------------------------------*/
9306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9307 ( NULL == pEventData->pCBfnc ))
9308 {
9309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 }
9314
9315 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9316 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9317 /*-------------------------------------------------------------------------
9318 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 -------------------------------------------------------------------------*/
9321 wpalMutexAcquire(&pWDICtx->wptMutex);
9322
9323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9327 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9328 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 {
9332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9334 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009335
9336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 }
9339
9340 /*------------------------------------------------------------------------
9341 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 ------------------------------------------------------------------------*/
9344 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9345 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9347 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9348 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009349
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 }
9354
9355
9356 wpalMutexRelease(&pWDICtx->wptMutex);
9357 /*-----------------------------------------------------------------------
9358 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9363 &pSendBuffer, &usDataOffset, &usSendSize))||
9364 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9365 {
9366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9367 "Unable to get send buffer in set bss key req %x %x %x",
9368 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 }
9372
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 wpalMemoryCopy( pSendBuffer+usDataOffset,
9374 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9375 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009376
9377 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009379
9380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9384 wdiUpdateEDCARspCb, pEventData->pUserData,
9385 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009386}/*WDI_ProcessUpdateEDCAParamsReq*/
9387
9388/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009391
9392 @param pWDICtx: pointer to the WLAN DAL context
9393 pEventData: pointer to the event information structure
9394
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 @see
9396 @return Result of the function call
9397*/
9398WDI_Status
9399WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009400(
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 WDI_ControlBlockType* pWDICtx,
9402 WDI_EventInfoType* pEventData
9403)
9404{
9405 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9406 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 wpt_uint16 usDataOffset = 0;
9411 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 wpt_macAddr macBSSID;
9414
9415 tAddBASessionReqMsg halAddBASessionReq;
9416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9417
9418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -------------------------------------------------------------------------*/
9421 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9422 ( NULL == pEventData->pCBfnc ))
9423 {
9424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 }
9429
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9434 /*-------------------------------------------------------------------------
9435 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -------------------------------------------------------------------------*/
9438 wpalMutexAcquire(&pWDICtx->wptMutex);
9439
9440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9444 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 &macBSSID))
9446 {
9447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9448 "This station does not exist in the WDI Station Table %d");
9449 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 }
9452
9453
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9459 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9460 __func__, MAC_ADDR_ARRAY(macBSSID));
9461
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
9466 /*------------------------------------------------------------------------
9467 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 ------------------------------------------------------------------------*/
9470 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9471 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9473 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9474 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
9480
9481
9482 wpalMutexRelease(&pWDICtx->wptMutex);
9483 /*-----------------------------------------------------------------------
9484 Get message buffer
9485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9487 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 sizeof(halAddBASessionReq.addBASessionParams),
9489 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9492 {
9493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9494 "Unable to get send buffer in Add BA session req %x %x %x",
9495 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 }
9499
9500 halAddBASessionReq.addBASessionParams.staIdx =
9501 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9502 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9503 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9504 WDI_MAC_ADDR_LEN);
9505 halAddBASessionReq.addBASessionParams.baTID =
9506 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9507 halAddBASessionReq.addBASessionParams.baPolicy =
9508 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9509 halAddBASessionReq.addBASessionParams.baBufferSize =
9510 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9511 halAddBASessionReq.addBASessionParams.baTimeout =
9512 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9513 halAddBASessionReq.addBASessionParams.baSSN =
9514 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9515 halAddBASessionReq.addBASessionParams.baDirection =
9516 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 wpalMemoryCopy( pSendBuffer+usDataOffset,
9519 &halAddBASessionReq.addBASessionParams,
9520 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009521
9522 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524
9525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9529 wdiAddBASessionRspCb, pEventData->pUserData,
9530 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009531}/*WDI_ProcessAddBASessionReq*/
9532
9533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009536
9537 @param pWDICtx: pointer to the WLAN DAL context
9538 pEventData: pointer to the event information structure
9539
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 @see
9541 @return Result of the function call
9542*/
9543WDI_Status
9544WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009545(
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 WDI_ControlBlockType* pWDICtx,
9547 WDI_EventInfoType* pEventData
9548)
9549{
9550 WDI_DelBAReqParamsType* pwdiDelBAParams;
9551 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 wpt_uint16 usDataOffset = 0;
9556 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 wpt_macAddr macBSSID;
9559 tDelBAParams halDelBAparam;
9560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9561
9562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 -------------------------------------------------------------------------*/
9565 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9566 ( NULL == pEventData->pCBfnc ))
9567 {
9568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 }
9573
9574 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9575 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9576 /*-------------------------------------------------------------------------
9577 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 -------------------------------------------------------------------------*/
9580 wpalMutexAcquire(&pWDICtx->wptMutex);
9581
9582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9586 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 &macBSSID))
9588 {
9589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9590 "This station does not exist in the WDI Station Table %d");
9591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 }
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009596
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9600 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9601 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 }
9606
9607 /*------------------------------------------------------------------------
9608 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 ------------------------------------------------------------------------*/
9611 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9612 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9614 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9615 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009616
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 }
9621
9622 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 sizeof(halDelBAparam),
9625 &pSendBuffer, &usDataOffset, &usSendSize))||
9626 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9627 {
9628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9629 "Unable to get send buffer for DEL BA req %x %x %x",
9630 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9636 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9637 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9638
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 wpalMemoryCopy( pSendBuffer+usDataOffset,
9640 &halDelBAparam,
9641 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009642
9643 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009645
9646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9650 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651}/*WDI_ProcessDelBAReq*/
9652
9653#ifdef FEATURE_WLAN_CCX
9654
9655WDI_Status
9656WDI_ProcessTSMStatsReq
9657(
9658 WDI_ControlBlockType* pWDICtx,
9659 WDI_EventInfoType* pEventData
9660)
9661{
9662 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9663 WDI_TsmRspCb wdiTSMRspCb;
9664 wpt_uint8 ucCurrentBSSSesIdx = 0;
9665 WDI_BSSSessionType* pBSSSes = NULL;
9666 wpt_uint8* pSendBuffer = NULL;
9667 wpt_uint16 usDataOffset = 0;
9668 wpt_uint16 usSendSize = 0;
9669 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9670 tTsmStatsParams halTsmStatsReqParams = {0};
9671
9672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9673
9674 /*-------------------------------------------------------------------------
9675 Sanity check
9676 -------------------------------------------------------------------------*/
9677 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9678 ( NULL == pEventData->pCBfnc ))
9679 {
9680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 WDI_ASSERT(0);
9683 return WDI_STATUS_E_FAILURE;
9684 }
9685
9686 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9687 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9688 /*-------------------------------------------------------------------------
9689 Check to see if we are in the middle of an association, if so queue, if
9690 not it means it is free to process request
9691 -------------------------------------------------------------------------*/
9692 wpalMutexAcquire(&pWDICtx->wptMutex);
9693
9694 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9695 if ( NULL == pBSSSes )
9696 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9698 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9699 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009700
9701 wpalMutexRelease(&pWDICtx->wptMutex);
9702 return WDI_STATUS_E_NOT_ALLOWED;
9703 }
9704
9705 /*------------------------------------------------------------------------
9706 Check if this BSS is being currently processed or queued,
9707 if queued - queue the new request as well
9708 ------------------------------------------------------------------------*/
9709 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9710 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9712 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9713 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009714
9715 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9716 wpalMutexRelease(&pWDICtx->wptMutex);
9717 return wdiStatus;
9718 }
9719
9720 wpalMutexRelease(&pWDICtx->wptMutex);
9721 /*-----------------------------------------------------------------------
9722 Get message buffer
9723 ! TO DO : proper conversion into the HAL Message Request Format
9724 -----------------------------------------------------------------------*/
9725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9726 sizeof(halTsmStatsReqParams),
9727 &pSendBuffer, &usDataOffset, &usSendSize))||
9728 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9729 {
9730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9731 "Unable to get send buffer in set bss key req %x %x %x",
9732 pEventData, pwdiTSMParams, wdiTSMRspCb);
9733 WDI_ASSERT(0);
9734 return WDI_STATUS_E_FAILURE;
9735 }
9736
9737 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9738 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9739 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9740 WDI_MAC_ADDR_LEN);
9741 wpalMemoryCopy( pSendBuffer+usDataOffset,
9742 &halTsmStatsReqParams,
9743 sizeof(halTsmStatsReqParams));
9744
9745 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9746 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9747
9748 /*-------------------------------------------------------------------------
9749 Send TSM Stats Request to HAL
9750 -------------------------------------------------------------------------*/
9751 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9752 wdiTSMRspCb, pEventData->pUserData,
9753 WDI_TSM_STATS_RESP);
9754}/*WDI_ProcessTSMStatsReq*/
9755
9756#endif
9757
9758
9759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009762
9763 @param pWDICtx: pointer to the WLAN DAL context
9764 pEventData: pointer to the event information structure
9765
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 @see
9767 @return Result of the function call
9768*/
9769WDI_Status
9770WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009771(
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_ControlBlockType* pWDICtx,
9773 WDI_EventInfoType* pEventData
9774)
9775{
9776 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9777 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 wpt_uint16 usDataOffset = 0;
9780 wpt_uint16 usSendSize = 0;
9781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9782
9783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 -------------------------------------------------------------------------*/
9786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9787 ( NULL == pEventData->pCBfnc ))
9788 {
9789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 }
9794
9795 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9796 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9797 /*-----------------------------------------------------------------------
9798 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9803 &pSendBuffer, &usDataOffset, &usSendSize))||
9804 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9805 {
9806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9807 "Unable to get send buffer in set bss key req %x %x %x",
9808 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 }
9812
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 wpalMemoryCopy( pSendBuffer+usDataOffset,
9814 &pwdiFlushAcParams->wdiFlushAcInfo,
9815 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009816
9817 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009819
9820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9824 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009825}/*WDI_ProcessFlushAcReq*/
9826
9827/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009830
9831 @param pWDICtx: pointer to the WLAN DAL context
9832 pEventData: pointer to the event information structure
9833
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 @see
9835 @return Result of the function call
9836*/
9837WDI_Status
9838WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009839(
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 WDI_ControlBlockType* pWDICtx,
9841 WDI_EventInfoType* pEventData
9842)
9843{
9844 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9845 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 wpt_uint16 usDataOffset = 0;
9848 wpt_uint16 usSendSize = 0;
9849
9850 tBtAmpEventMsg haltBtAmpEventMsg;
9851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9852
9853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 -------------------------------------------------------------------------*/
9856 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9857 ( NULL == pEventData->pCBfnc ))
9858 {
9859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 }
9864
9865 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9866 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9867 /*-----------------------------------------------------------------------
9868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9873 &pSendBuffer, &usDataOffset, &usSendSize))||
9874 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9875 {
9876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9877 "Unable to get send buffer in BT AMP event req %x %x %x",
9878 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 wpalMemoryCopy( pSendBuffer+usDataOffset,
9886 &haltBtAmpEventMsg.btAmpEventParams,
9887 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009888
9889 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009891
9892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9896 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897}/*WDI_ProcessBtAmpEventReq*/
9898
9899/**
9900 @brief Process Add STA self Request function (called when Main FSM
9901 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009902
9903 @param pWDICtx: pointer to the WLAN DAL context
9904 pEventData: pointer to the event information structure
9905
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 @see
9907 @return Result of the function call
9908*/
9909WDI_Status
9910WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009911(
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 WDI_ControlBlockType* pWDICtx,
9913 WDI_EventInfoType* pEventData
9914)
9915{
9916 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9917 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 wpt_uint16 usDataOffset = 0;
9920 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
9927 if (( NULL == pEventData ) ||
9928 ( NULL == pEventData->pEventData) ||
9929 ( NULL == pEventData->pCBfnc))
9930 {
9931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9941 /*-----------------------------------------------------------------------
9942 Get message buffer
9943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9945 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 sizeof(tAddStaSelfParams),
9947 &pSendBuffer, &usDataOffset, &usSendSize))||
9948 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9949 {
9950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9951 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9952 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 }
9956
9957 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9960
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9965 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009966
9967 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969
9970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9974 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9975 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009976}/*WDI_ProcessAddSTASelfReq*/
9977
9978
9979
9980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009983
9984 @param pWDICtx: pointer to the WLAN DAL context
9985 pEventData: pointer to the event information structure
9986
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 @see
9988 @return Result of the function call
9989*/
9990WDI_Status
9991WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009992(
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 WDI_ControlBlockType* pWDICtx,
9994 WDI_EventInfoType* pEventData
9995)
9996{
9997 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9998 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 wpt_uint16 usDataOffset = 0;
10001 wpt_uint16 usSendSize = 0;
10002 tDelStaSelfParams halSetDelSelfSTAParams;
10003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10004
10005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 -------------------------------------------------------------------------*/
10008 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10009 ( NULL == pEventData->pCBfnc ))
10010 {
10011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 }
10016
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10019 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10020
10021 /*-----------------------------------------------------------------------
10022 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10027 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10030 {
10031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10032 "Unable to get send buffer in Del Sta Self req %x %x %x",
10033 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 }
10037
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10042 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
10047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10051 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_DEL_STA_SELF_RESP);
10053
10054}
10055
Jeff Johnsone7245742012-09-05 17:12:55 -070010056#ifdef FEATURE_OEM_DATA_SUPPORT
10057/**
10058 @brief Process Start Oem Data Request function (called when Main
10059 FSM allows it)
10060
10061 @param pWDICtx: pointer to the WLAN DAL context
10062 pEventData: pointer to the event information structure
10063
10064 @see
10065 @return Result of the function call
10066*/
10067WDI_Status
10068WDI_ProcessStartOemDataReq
10069(
10070 WDI_ControlBlockType* pWDICtx,
10071 WDI_EventInfoType* pEventData
10072)
10073{
10074 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10075 WDI_oemDataRspCb wdiOemDataRspCb;
10076 wpt_uint8* pSendBuffer = NULL;
10077 wpt_uint16 usDataOffset = 0;
10078 wpt_uint16 usSendSize = 0;
10079 wpt_uint16 reqLen;
10080 tStartOemDataReqParams* halStartOemDataReqParams;
10081
10082 /*-------------------------------------------------------------------------
10083 Sanity check
10084 -------------------------------------------------------------------------*/
10085 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10086 ( NULL == pEventData->pCBfnc ))
10087 {
10088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010089 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 WDI_ASSERT(0);
10091 return WDI_STATUS_E_FAILURE;
10092 }
10093
10094 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10095 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10096
10097 /*-----------------------------------------------------------------------
10098 Get message buffer
10099 -----------------------------------------------------------------------*/
10100
10101 reqLen = sizeof(tStartOemDataReqParams);
10102
10103 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10104 WDI_START_OEM_DATA_REQ, reqLen,
10105 &pSendBuffer, &usDataOffset, &usSendSize))||
10106 (usSendSize < (usDataOffset + reqLen)))
10107 {
10108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10109 "Unable to get send buffer in Start Oem Data req %x %x %x",
10110 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10111 WDI_ASSERT(0);
10112 return WDI_STATUS_E_FAILURE;
10113 }
10114
10115 //copying WDI OEM DATA REQ PARAMS to shared memory
10116 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10117
10118 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10119 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10120
10121 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10122 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10123
10124 /*-------------------------------------------------------------------------
10125 Send Start Request to HAL
10126 -------------------------------------------------------------------------*/
10127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10128 wdiOemDataRspCb, pEventData->pUserData,
10129 WDI_START_OEM_DATA_RESP);
10130}/*WDI_ProcessStartOemDataReq*/
10131#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010132
10133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010136
10137 @param pWDICtx: pointer to the WLAN DAL context
10138 pEventData: pointer to the event information structure
10139
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 @see
10141 @return Result of the function call
10142*/
10143WDI_Status
10144WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010145(
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 WDI_ControlBlockType* pWDICtx,
10147 WDI_EventInfoType* pEventData
10148)
10149{
10150 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10151 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 wpt_uint16 usDataOffset = 0;
10154 wpt_uint16 usSendSize = 0;
10155 tHalWlanHostResumeReqParam halResumeReqParams;
10156
10157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10158
10159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 -------------------------------------------------------------------------*/
10162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10163 ( NULL == pEventData->pCBfnc ))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 }
10170
10171 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10172 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10173
10174 /*-----------------------------------------------------------------------
10175 Get message buffer
10176 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10179 &pSendBuffer, &usDataOffset, &usSendSize))||
10180 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10181 {
10182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191
10192 wpalMemoryCopy( pSendBuffer+usDataOffset,
10193 &halResumeReqParams,
10194 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010195
10196 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010198
10199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10203 wdiHostResumeRspCb, pEventData->pUserData,
10204 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010205}/*WDI_ProcessHostResumeReq*/
10206
10207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010210
10211 @param pWDICtx: pointer to the WLAN DAL context
10212 pEventData: pointer to the event information structure
10213
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 @see
10215 @return Result of the function call
10216*/
10217WDI_Status
10218WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010219(
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 WDI_ControlBlockType* pWDICtx,
10221 WDI_EventInfoType* pEventData
10222)
10223{
10224 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10225 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 wpt_uint16 usDataOffset = 0;
10228 wpt_uint16 usSendSize = 0;
10229 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10231
10232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 -------------------------------------------------------------------------*/
10235 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10236 ( NULL == pEventData->pCBfnc ))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010239 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 }
10243
10244 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10245 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010246
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 /*-----------------------------------------------------------------------
10248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 sizeof(halTxPerTrackingReqParam),
10253 &pSendBuffer, &usDataOffset, &usSendSize))||
10254 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10255 {
10256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10257 "Unable to get send buffer in set tx per tracking req %x %x %x",
10258 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010262
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10264 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10265 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10266 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010267
10268 wpalMemoryCopy( pSendBuffer+usDataOffset,
10269 &halTxPerTrackingReqParam,
10270 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010271
10272 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274
10275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10279 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010280}/*WDI_ProcessSetTxPerTrackingReq*/
10281
10282/*=========================================================================
10283 Indications
10284=========================================================================*/
10285
10286/**
10287 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010288
10289 @param pWDICtx: pointer to the WLAN DAL context
10290 pEventData: pointer to the event information structure
10291
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 @see
10293 @return Result of the function call
10294*/
10295WDI_Status
10296WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010297(
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 WDI_ControlBlockType* pWDICtx,
10299 WDI_EventInfoType* pEventData
10300)
10301{
10302 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 WDI_Status wdiStatus;
10307 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
10313 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10314 {
10315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010316 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10322
10323 /*-----------------------------------------------------------------------
10324 Get message buffer
10325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10327 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 sizeof(halWlanSuspendIndparams),
10329 &pSendBuffer, &usDataOffset, &usSendSize))||
10330 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10331 {
10332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10333 "Unable to get send buffer in Suspend Ind ");
10334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 }
10337
10338 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10339 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10340
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 WDI_GetActiveSessionsCount(pWDICtx);
10343
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10345 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 -------------------------------------------------------------------------*/
10350 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010352
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10355}/*WDI_ProcessHostSuspendInd*/
10356
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010357
10358
10359/**
10360 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10361
10362 @param pWDICtx: pointer to the WLAN DAL context
10363 pEventData: pointer to the event information structure
10364
10365 @see
10366 @return Result of the function call
10367*/
10368WDI_Status
10369WDI_ProcessTrafficStatsInd
10370(
10371 WDI_ControlBlockType* pWDICtx,
10372 WDI_EventInfoType* pEventData
10373)
10374{
10375 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10376 wpt_uint8* pSendBuffer = NULL;
10377 wpt_uint16 usDataOffset = 0;
10378 wpt_uint16 usSendSize = 0;
10379 WDI_Status wdiStatus;
10380 tStatsClassBIndParams* pStatsClassBIndParams;
10381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10382
10383 /*-------------------------------------------------------------------------
10384 Sanity check
10385 -------------------------------------------------------------------------*/
10386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10387 {
10388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10389 "%s: Invalid parameters in Traffic Stats ind",__func__);
10390 WDI_ASSERT(0);
10391 return WDI_STATUS_E_FAILURE;
10392 }
10393
10394 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10395
10396 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10397 {
10398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10399 "%s: Invalid parameters in Traffic Stats ind",__func__);
10400 WDI_ASSERT(0);
10401 return WDI_STATUS_E_FAILURE;
10402 }
10403
10404 /*-----------------------------------------------------------------------
10405 Get message buffer
10406 -----------------------------------------------------------------------*/
10407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10408 WDI_TRAFFIC_STATS_IND,
10409 sizeof(tStatsClassBIndParams),
10410 &pSendBuffer, &usDataOffset, &usSendSize))||
10411 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10412 {
10413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10414 "Unable to get send buffer in Traffic Stats Ind ");
10415 WDI_ASSERT(0);
10416 return WDI_STATUS_E_FAILURE;
10417 }
10418
10419 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10420
10421 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10422
10423 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10424 pTrafficStatsIndParams->pTrafficStats,
10425 pTrafficStatsIndParams->length);
10426
10427 /*-------------------------------------------------------------------------
10428 Send Suspend Request to HAL
10429 -------------------------------------------------------------------------*/
10430 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10431 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10432
10433 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10434 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10435}/*WDI_ProcessTrafficStatsInd*/
10436
Jeff Johnson295189b2012-06-20 16:38:30 -070010437/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010439==========================================================================*/
10440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010443
10444 @param pWDICtx: pointer to the WLAN DAL context
10445 pEventData: pointer to the event information structure
10446
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 @see
10448 @return Result of the function call
10449*/
10450WDI_Status
10451WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010452(
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 WDI_ControlBlockType* pWDICtx,
10454 WDI_EventInfoType* pEventData
10455)
10456{
10457 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10458 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 wpt_uint16 usDataOffset = 0;
10461 wpt_uint16 usSendSize = 0;
10462 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10464
10465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 -------------------------------------------------------------------------*/
10468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10469 ( NULL == pEventData->pCBfnc ))
10470 {
10471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 }
10476
10477 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10478 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10479 /*-----------------------------------------------------------------------
10480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 sizeof(halSwitchChannelReq.switchChannelParams),
10485 &pSendBuffer, &usDataOffset, &usSendSize))||
10486 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10487 {
10488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10489 "Unable to get send buffer in channel switch req %x %x %x",
10490 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 }
10494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010497#ifndef WLAN_FEATURE_VOWIFI
10498 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10500#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10503
10504#ifdef WLAN_FEATURE_VOWIFI
10505 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10508 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10509 WDI_MAC_ADDR_LEN);
10510 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10511 pwdiSwitchChParams->wdiChInfo.macBSSId,
10512 WDI_MAC_ADDR_LEN);
10513#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 wpalMemoryCopy( pSendBuffer+usDataOffset,
10515 &halSwitchChannelReq.switchChannelParams,
10516 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010517
10518 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520
10521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010522 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10525 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010526}/*WDI_ProcessChannelSwitchReq*/
10527
10528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010531
10532 @param pWDICtx: pointer to the WLAN DAL context
10533 pEventData: pointer to the event information structure
10534
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 @see
10536 @return Result of the function call
10537*/
10538WDI_Status
10539WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010540(
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 WDI_ControlBlockType* pWDICtx,
10542 WDI_EventInfoType* pEventData
10543)
10544{
10545 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10546 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 wpt_uint16 usDataOffset = 0;
10551 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 tConfigStaReqMsg halConfigStaReqMsg;
10555 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10557
10558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 -------------------------------------------------------------------------*/
10561 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10562 ( NULL == pEventData->pCBfnc ))
10563 {
10564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 }
10569
10570 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10571 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10572 /*-------------------------------------------------------------------------
10573 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 -------------------------------------------------------------------------*/
10576 wpalMutexAcquire(&pWDICtx->wptMutex);
10577
10578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10582 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10583 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010584
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10588 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10589 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010590
10591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 }
10594
10595 /*------------------------------------------------------------------------
10596 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 ------------------------------------------------------------------------*/
10599 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10600 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10602 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10603 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010604
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 }
10609
10610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010611
10612 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10613#ifdef WLAN_FEATURE_11AC
10614 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010615 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 else
10617#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010618 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010619
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 /*-----------------------------------------------------------------------
10621 Get message buffer
10622 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10624 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 {
10628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10629 "Unable to get send buffer in config sta req %x %x %x",
10630 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 }
10634
10635 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 &pwdiConfigSTAParams->wdiReqInfo);
10638
10639 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10640 {
10641 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 WDI_STATableFindStaidByAddr(pWDICtx,
10644 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 {
10647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10648 "This station does not exist in the WDI Station Table %d");
10649 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010650 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 }
10653 }
10654 else
10655 {
10656 /* Need to fill in the STA Index to invalid, since at this point we have not
10657 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 }
10660
10661 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010663
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 wpalMemoryCopy( pSendBuffer+usDataOffset,
10665 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010666 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
10668 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010670
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10672 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 sizeof(pWDICtx->wdiCachedConfigStaReq));
10674
10675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10679 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010680}/*WDI_ProcessConfigStaReq*/
10681
10682
10683/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010686
10687 @param pWDICtx: pointer to the WLAN DAL context
10688 pEventData: pointer to the event information structure
10689
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 @see
10691 @return Result of the function call
10692*/
10693WDI_Status
10694WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010695(
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 WDI_ControlBlockType* pWDICtx,
10697 WDI_EventInfoType* pEventData
10698)
10699{
10700 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10701 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 wpt_uint16 usDataOffset = 0;
10706 wpt_uint16 usSendSize = 0;
10707 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10710
10711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 -------------------------------------------------------------------------*/
10714 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10715 ( NULL == pEventData->pCBfnc ))
10716 {
10717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 }
10722
10723 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10724 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10725 /*-------------------------------------------------------------------------
10726 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 -------------------------------------------------------------------------*/
10729 wpalMutexAcquire(&pWDICtx->wptMutex);
10730
10731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10735 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10736 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010737
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10742 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 }
10744 else
10745 {
10746 /*------------------------------------------------------------------------
10747 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 ------------------------------------------------------------------------*/
10750 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10751 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10753 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10754 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10755
10756 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 }
10760 }
10761 /* If the link is set to enter IDLE - the Session allocated for this BSS
10762 will be deleted on the Set Link State response coming from HAL
10763 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10766
10767 wpalMutexRelease(&pWDICtx->wptMutex);
10768 /*-----------------------------------------------------------------------
10769 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010772
10773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 sizeof(halLinkStateReqMsg),
10775 &pSendBuffer, &usDataOffset, &usSendSize))||
10776 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10777 {
10778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10779 "Unable to get send buffer in set bss key req %x %x %x",
10780 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 }
10784
10785 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10786 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10787
10788 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10789 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10790
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10793
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 wpalMemoryCopy( pSendBuffer+usDataOffset,
10795 &halLinkStateReqMsg,
10796 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010797
10798 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010800
10801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10805 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010806}/*WDI_ProcessSetLinkStateReq*/
10807
10808
10809/**
10810 @brief Process Get Stats Request function (called when Main FSM
10811 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010812
10813 @param pWDICtx: pointer to the WLAN DAL context
10814 pEventData: pointer to the event information structure
10815
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 @see
10817 @return Result of the function call
10818*/
10819WDI_Status
10820WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010821(
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 WDI_ControlBlockType* pWDICtx,
10823 WDI_EventInfoType* pEventData
10824)
10825{
10826 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10827 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 wpt_uint16 usDataOffset = 0;
10830 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 WDI_BSSSessionType* pBSSSes = NULL;
10833 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 tHalStatsReqMsg halStatsReqMsg;
10836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10837
10838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 -------------------------------------------------------------------------*/
10841 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10842 ( NULL == pEventData->pCBfnc ) )
10843 {
10844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 }
10849
10850 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10851 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10852
10853 /*-------------------------------------------------------------------------
10854 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 wpalMutexAcquire(&pWDICtx->wptMutex);
10858
10859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10863 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 &macBSSID))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10867 "This station does not exist in the WDI Station Table %d");
10868 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 }
10871
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10873 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10876 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10877 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010878
10879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 }
10882
10883 /*------------------------------------------------------------------------
10884 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 ------------------------------------------------------------------------*/
10887 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10888 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10890 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10891 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010892
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 }
10897
10898
10899 wpalMutexRelease(&pWDICtx->wptMutex);
10900
10901 /*-----------------------------------------------------------------------
10902 Get message buffer
10903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 sizeof(halStatsReqMsg.statsReqParams),
10906 &pSendBuffer, &usDataOffset, &usSendSize))||
10907 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10910 "Unable to get send buffer in set bss key req %x %x %x",
10911 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 wpalMemoryCopy( pSendBuffer+usDataOffset,
10921 &halStatsReqMsg.statsReqParams,
10922 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926
10927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10931 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010932}/*WDI_ProcessGetStatsReq*/
10933
10934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010937
10938 @param pWDICtx: pointer to the WLAN DAL context
10939 pEventData: pointer to the event information structure
10940
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 @see
10942 @return Result of the function call
10943*/
10944WDI_Status
10945WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010946(
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 WDI_ControlBlockType* pWDICtx,
10948 WDI_EventInfoType* pEventData
10949)
10950{
10951 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10952 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10953
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 wpt_uint16 usDataOffset = 0;
10956 wpt_uint16 usSendSize = 0;
10957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10958
10959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 -------------------------------------------------------------------------*/
10962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10963 ( NULL == pEventData->pCBfnc))
10964 {
10965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 }
10970
10971 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10972 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10973
10974 /*-----------------------------------------------------------------------
10975 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 -----------------------------------------------------------------------*/
10978
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10981 &pSendBuffer, &usDataOffset, &usSendSize))||
10982 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10983 {
10984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10985 "Unable to get send buffer in set bss key req %x %x %x",
10986 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010989 }
10990
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 wpalMemoryCopy( pSendBuffer+usDataOffset,
10992 &pwdiUpdateCfgParams->uConfigBufferLen,
10993 sizeof(wpt_uint32));
10994 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10995 pwdiUpdateCfgParams->pConfigBuffer,
10996 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010997
10998 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
11001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 -------------------------------------------------------------------------*/
11004
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11006 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011007
11008}/*WDI_ProcessUpdateCfgReq*/
11009
11010
11011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011014
11015 @param pWDICtx: pointer to the WLAN DAL context
11016 pEventData: pointer to the event information structure
11017
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 @see
11019 @return Result of the function call
11020*/
11021WDI_Status
11022WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011023(
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 WDI_ControlBlockType* pWDICtx,
11025 WDI_EventInfoType* pEventData
11026)
11027{
11028 WDI_AddBAReqParamsType* pwdiAddBAParams;
11029 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 wpt_uint16 usDataOffset = 0;
11034 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 wpt_macAddr macBSSID;
11037
11038 tAddBAReqMsg halAddBAReq;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040
11041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 -------------------------------------------------------------------------*/
11044 if (( NULL == pEventData ) ||
11045 ( NULL == pEventData->pEventData) ||
11046 ( NULL == pEventData->pCBfnc ))
11047 {
11048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 }
11053
11054 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11055 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11056
11057 /*-------------------------------------------------------------------------
11058 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011059 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011060 -------------------------------------------------------------------------*/
11061 wpalMutexAcquire(&pWDICtx->wptMutex);
11062
11063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11067 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 &macBSSID))
11069 {
11070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11071 "This station does not exist in the WDI Station Table %d");
11072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 }
11075
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11077 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11080 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11081 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011082
11083 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 }
11086
11087 /*------------------------------------------------------------------------
11088 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 ------------------------------------------------------------------------*/
11091 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11092 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11094 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11095 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011096
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 }
11101
11102
11103 wpalMutexRelease(&pWDICtx->wptMutex);
11104 /*-----------------------------------------------------------------------
11105 Get message buffer
11106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 sizeof(halAddBAReq.addBAParams),
11109 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11112 {
11113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11114 "Unable to get send buffer in Add BA req %x %x %x",
11115 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 }
11119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11122 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11123#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11126#endif
11127
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 wpalMemoryCopy( pSendBuffer+usDataOffset,
11129 &halAddBAReq.addBAParams,
11130 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011131
11132 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011134
11135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11139 wdiAddBARspCb, pEventData->pUserData,
11140 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011141}/*WDI_ProcessAddBAReq*/
11142
11143
11144
11145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011148
11149 @param pWDICtx: pointer to the WLAN DAL context
11150 pEventData: pointer to the event information structure
11151
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 @see
11153 @return Result of the function call
11154*/
11155WDI_Status
11156WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011157(
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 WDI_ControlBlockType* pWDICtx,
11159 WDI_EventInfoType* pEventData
11160)
11161{
11162 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11163 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 wpt_uint16 usDataOffset = 0;
11168 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 wpt_uint16 index;
11171 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011172
Jeff Johnson295189b2012-06-20 16:38:30 -070011173 tTriggerBAReqMsg halTriggerBAReq;
11174 tTriggerBaReqCandidate* halTriggerBACandidate;
11175 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11177
11178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 -------------------------------------------------------------------------*/
11181 if (( NULL == pEventData ) ||
11182 ( NULL == pEventData->pEventData ) ||
11183 ( NULL == pEventData->pCBfnc ))
11184 {
11185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
11191 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11192 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11193 /*-------------------------------------------------------------------------
11194 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 -------------------------------------------------------------------------*/
11197 wpalMutexAcquire(&pWDICtx->wptMutex);
11198
11199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11203 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 &macBSSID))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11207 "This station does not exist in the WDI Station Table %d");
11208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11213 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11216 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11217 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011218
11219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 }
11222
11223 /*------------------------------------------------------------------------
11224 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 ------------------------------------------------------------------------*/
11227 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11228 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11230 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11231 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 }
11237
11238
11239 wpalMutexRelease(&pWDICtx->wptMutex);
11240 /*-----------------------------------------------------------------------
11241 Get message buffer
11242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11244 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11248 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11253 {
11254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11255 "Unable to get send buffer in Trigger BA req %x %x %x",
11256 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 }
11260
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11265
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 wpalMemoryCopy( pSendBuffer+usDataOffset,
11267 &halTriggerBAReq.triggerBAParams,
11268 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11272 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11273 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011274
11275 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 index++)
11277 {
11278 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11279 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11280 halTriggerBACandidate++;
11281 wdiTriggerBACandidate++;
11282 }
11283
11284 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011285 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011286
11287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11291 wdiTriggerBARspCb, pEventData->pUserData,
11292 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011293}/*WDI_ProcessTriggerBAReq*/
11294
11295
11296
11297/**
11298 @brief Process Update Beacon Params Request function (called when Main FSM
11299 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011300
11301 @param pWDICtx: pointer to the WLAN DAL context
11302 pEventData: pointer to the event information structure
11303
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 @see
11305 @return Result of the function call
11306*/
11307WDI_Status
11308WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011309(
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 WDI_ControlBlockType* pWDICtx,
11311 WDI_EventInfoType* pEventData
11312)
11313{
11314 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11315 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 wpt_uint16 usDataOffset = 0;
11318 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11321
11322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 -------------------------------------------------------------------------*/
11325 if (( NULL == pEventData ) ||
11326 ( NULL == pEventData->pEventData) ||
11327 ( NULL == pEventData->pCBfnc))
11328 {
11329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 }
11334
11335 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11336 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11337 /*-----------------------------------------------------------------------
11338 Get message buffer
11339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 sizeof(halUpdateBeaconParams),
11342 &pSendBuffer, &usDataOffset, &usSendSize))||
11343 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11344 {
11345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11346 "Unable to get send buffer in set bss key req %x %x %x",
11347 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 }
11351
11352 /*BSS Index of the BSS*/
11353 halUpdateBeaconParams.bssIdx =
11354 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11355 /*shortPreamble mode. HAL should update all the STA rates when it
11356 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11359 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11362 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11365
11366 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11379 halUpdateBeaconParams.fRIFSMode =
11380 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11383
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11385 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011386
11387 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389
11390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11394 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011395}/*WDI_ProcessUpdateBeaconParamsReq*/
11396
11397
11398
11399/**
11400 @brief Process Send Beacon template Request function (called when Main FSM
11401 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011402
11403 @param pWDICtx: pointer to the WLAN DAL context
11404 pEventData: pointer to the event information structure
11405
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 @see
11407 @return Result of the function call
11408*/
11409WDI_Status
11410WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011411(
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 WDI_ControlBlockType* pWDICtx,
11413 WDI_EventInfoType* pEventData
11414)
11415{
11416 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11417 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 wpt_uint16 usDataOffset = 0;
11420 wpt_uint16 usSendSize = 0;
11421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11422
11423 tSendBeaconReqMsg halSendBeaconReq;
11424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 -------------------------------------------------------------------------*/
11427 if (( NULL == pEventData ) ||
11428 ( NULL == pEventData->pEventData ) ||
11429 ( NULL == pEventData->pCBfnc ))
11430 {
11431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11438 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11439 /*-----------------------------------------------------------------------
11440 Get message buffer
11441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 sizeof(halSendBeaconReq.sendBeaconParam),
11444 &pSendBuffer, &usDataOffset, &usSendSize))||
11445 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11446 {
11447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11448 "Unable to get send buffer in send beacon req %x %x %x",
11449 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 }
11453
11454 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11455 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11456 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11459 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11460 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11461 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11462#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11465#endif
11466#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011467 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011468 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11469#endif
11470
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 wpalMemoryCopy( pSendBuffer+usDataOffset,
11472 &halSendBeaconReq.sendBeaconParam,
11473 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011474
11475 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11482 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011483}/*WDI_ProcessSendBeaconParamsReq*/
11484
11485/**
11486 @brief Process Update Beacon Params Request function (called when Main FSM
11487 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011488
11489 @param pWDICtx: pointer to the WLAN DAL context
11490 pEventData: pointer to the event information structure
11491
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 @see
11493 @return Result of the function call
11494*/
11495WDI_Status
11496WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011497(
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 WDI_ControlBlockType* pWDICtx,
11499 WDI_EventInfoType* pEventData
11500)
11501{
11502 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11503 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 wpt_uint16 usDataOffset = 0;
11506 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11509
11510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 -------------------------------------------------------------------------*/
11513 if (( NULL == pEventData ) ||
11514 ( NULL == pEventData->pEventData) ||
11515 ( NULL == pEventData->pCBfnc))
11516 {
11517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 }
11522
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11527 /*-----------------------------------------------------------------------
11528 Get message buffer
11529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 sizeof(halUpdateProbeRspTmplParams),
11532 &pSendBuffer, &usDataOffset, &usSendSize))||
11533 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11536 "Unable to get send buffer in set bss key req %x %x %x",
11537 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 }
11541
11542 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 WDI_MAC_ADDR_LEN);
11545
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11548
11549 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11550 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553
11554 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11555 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11556 WDI_PROBE_REQ_BITMAP_IE_LEN);
11557
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 wpalMemoryCopy( pSendBuffer+usDataOffset,
11559 &halUpdateProbeRspTmplParams,
11560 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011561
11562 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011564
11565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11569 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11570 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011571}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11572
11573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011576
11577 @param pWDICtx: pointer to the WLAN DAL context
11578 pEventData: pointer to the event information structure
11579
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 @see
11581 @return Result of the function call
11582*/
11583WDI_Status
11584WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011585(
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 WDI_ControlBlockType* pWDICtx,
11587 WDI_EventInfoType* pEventData
11588)
11589{
11590
11591 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11592 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11593
11594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 -------------------------------------------------------------------------*/
11597 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11602 {
11603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 }
11608
11609 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11612
11613 /*cache the wdi nv request message here if the the first fragment
11614 * To issue the request to HAL for the next fragment */
11615 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11616 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11618 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11620
11621 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11622 pWDICtx->pRspCBUserData = pEventData->pUserData;
11623 }
11624
11625 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11626}
11627
11628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011631
11632 @param pWDICtx: pointer to the WLAN DAL context
11633 pEventData: pointer to the event information structure
11634
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 @see
11636 @return Result of the function call
11637*/
11638WDI_Status WDI_ProcessSetMaxTxPowerReq
11639(
11640 WDI_ControlBlockType* pWDICtx,
11641 WDI_EventInfoType* pEventData
11642)
11643{
11644 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11645 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 wpt_uint16 usDataOffset = 0;
11648 wpt_uint16 usSendSize = 0;
11649 tSetMaxTxPwrReq halSetMaxTxPower;
11650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11651
11652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 -------------------------------------------------------------------------*/
11655 if (( NULL == pEventData ) ||
11656 ( NULL == pEventData->pEventData ) ||
11657 ( NULL == pEventData->pCBfnc ))
11658 {
11659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11668
11669 /*-----------------------------------------------------------------------
11670 Get message buffer
11671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011672if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11674 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011676)))
11677 {
11678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11679 "Unable to get Set Max Tx Power req %x %x %x",
11680 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 }
11684
11685 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11686 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11687 WDI_MAC_ADDR_LEN);
11688
11689 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11690 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11691 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011694
11695 wpalMemoryCopy( pSendBuffer+usDataOffset,
11696 &halSetMaxTxPower.setMaxTxPwrParams,
11697 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011698
11699 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701
11702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11706 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11707 WDI_SET_MAX_TX_POWER_RESP);
11708
Jeff Johnson295189b2012-06-20 16:38:30 -070011709}
11710
11711#ifdef WLAN_FEATURE_P2P
11712
11713/**
11714 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11715 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011716
11717 @param pWDICtx: pointer to the WLAN DAL context
11718 pEventData: pointer to the event information structure
11719
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 @see
11721 @return Result of the function call
11722*/
11723WDI_Status
11724WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011725(
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 WDI_ControlBlockType* pWDICtx,
11727 WDI_EventInfoType* pEventData
11728)
11729{
11730 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11731 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11737
11738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 -------------------------------------------------------------------------*/
11741 if (( NULL == pEventData ) ||
11742 ( NULL == pEventData->pEventData) ||
11743 ( NULL == pEventData->pCBfnc))
11744 {
11745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 }
11750
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11755 /*-----------------------------------------------------------------------
11756 Get message buffer
11757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11759 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 sizeof(halSetP2PGONOAParams),
11761 &pSendBuffer, &usDataOffset, &usSendSize))||
11762 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11763 {
11764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11765 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11766 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 }
11770
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11775 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11784
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 wpalMemoryCopy( pSendBuffer+usDataOffset,
11786 &halSetP2PGONOAParams,
11787 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011788
11789 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011791
11792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11796 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11797 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011798}/*WDI_ProcessP2PGONOAReq*/
11799
11800#endif
11801
11802
11803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 @param None
11807
11808 @see
11809 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011810*/
11811void
11812WDI_SetPowerStateCb
11813(
11814 wpt_status status,
11815 unsigned int dxePhyAddr,
11816 void *pContext
11817)
11818{
11819 wpt_status wptStatus;
11820 WDI_ControlBlockType *pCB = NULL;
11821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11822 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11823 {
11824 //it shouldn't happen, put an error msg
11825 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 /*
11827 * Trigger the event to bring the Enter BMPS req function to come
11828 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011829*/
11830 if( NULL != pContext )
11831 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 }
11834 else
11835 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 pCB = &gWDICb;
11838 }
11839 pCB->dxePhyAddr = dxePhyAddr;
11840 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11841 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11842 {
11843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11844 "Failed to set an event");
11845
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 }
11848 return;
11849}
11850
11851
11852/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011855
11856 @param pWDICtx: pointer to the WLAN DAL context
11857 pEventData: pointer to the event information structure
11858
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 @see
11860 @return Result of the function call
11861*/
11862WDI_Status
11863WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011864(
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 WDI_ControlBlockType* pWDICtx,
11866 WDI_EventInfoType* pEventData
11867)
11868{
Jeff Johnson43971f52012-07-17 12:26:56 -070011869 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 wpt_uint16 usDataOffset = 0;
11873 wpt_uint16 usSendSize = 0;
11874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11875
11876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 -------------------------------------------------------------------------*/
11879 if (( NULL == pEventData ) ||
11880 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11881 {
11882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 }
11887
11888 /*-----------------------------------------------------------------------
11889 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 0,
11894 &pSendBuffer, &usDataOffset, &usSendSize))||
11895 ( usSendSize < (usDataOffset )))
11896 {
11897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11898 "Unable to get send buffer in Enter IMPS req %x %x",
11899 pEventData, wdiEnterImpsRspCb);
11900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 }
11903
11904 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011905 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11906 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 {
11908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11909 "WDI Init failed to reset an event");
11910
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 return VOS_STATUS_E_FAILURE;
11913 }
11914
11915 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080011916 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11917 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11919 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11920 WDI_ASSERT(0);
11921 return WDI_STATUS_E_FAILURE;
11922 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011923
11924 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011927 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11928 WDI_SET_POWER_STATE_TIMEOUT);
11929 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 {
11931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11932 "WDI Init failed to wait on an event");
11933
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 return VOS_STATUS_E_FAILURE;
11936 }
11937
11938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11942 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011943}/*WDI_ProcessEnterImpsReq*/
11944
11945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011948
11949 @param pWDICtx: pointer to the WLAN DAL context
11950 pEventData: pointer to the event information structure
11951
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 @see
11953 @return Result of the function call
11954*/
11955WDI_Status
11956WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011957(
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 WDI_ControlBlockType* pWDICtx,
11959 WDI_EventInfoType* pEventData
11960)
11961{
11962 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 wpt_uint16 usDataOffset = 0;
11965 wpt_uint16 usSendSize = 0;
11966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11967
11968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 -------------------------------------------------------------------------*/
11971 if (( NULL == pEventData ) ||
11972 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11973 {
11974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 }
11979
11980 /*-----------------------------------------------------------------------
11981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 0,
11986 &pSendBuffer, &usDataOffset, &usSendSize))||
11987 ( usSendSize < (usDataOffset )))
11988 {
11989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11990 "Unable to get send buffer in Exit IMPS req %x %x",
11991 pEventData, wdiExitImpsRspCb);
11992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 }
11995
11996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12000 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012001}/*WDI_ProcessExitImpsReq*/
12002
12003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012006
12007 @param pWDICtx: pointer to the WLAN DAL context
12008 pEventData: pointer to the event information structure
12009
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 @see
12011 @return Result of the function call
12012*/
12013WDI_Status
12014WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012015(
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 WDI_ControlBlockType* pWDICtx,
12017 WDI_EventInfoType* pEventData
12018)
12019{
12020 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12021 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 wpt_uint16 usDataOffset = 0;
12024 wpt_uint16 usSendSize = 0;
12025 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012026 wpt_status wptStatus;
12027
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12029
12030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 -------------------------------------------------------------------------*/
12033 if (( NULL == pEventData ) ||
12034 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12035 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12036 {
12037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 }
12042
12043 /*-----------------------------------------------------------------------
12044 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 sizeof(enterBmpsReq),
12049 &pSendBuffer, &usDataOffset, &usSendSize))||
12050 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12051 {
12052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12053 "Unable to get send buffer in Enter BMPS req %x %x %x",
12054 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058
12059 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012060 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12061 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 {
12063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12064 "WDI Init failed to reset an event");
12065
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 return VOS_STATUS_E_FAILURE;
12068 }
12069
12070 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080012071 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12072 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12073 {
12074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12075 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12076 WDI_ASSERT(0);
12077 return WDI_STATUS_E_FAILURE;
12078 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012079
12080/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012083 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12084 WDI_SET_POWER_STATE_TIMEOUT);
12085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 {
12087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12088 "WDI Init failed to wait on an event");
12089
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 WDI_ASSERT(0);
Ravali85acf6b2012-12-12 14:01:38 -080012091 return VOS_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 }
12093
12094 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12095
12096 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12097 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12098 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12099 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12100
12101 // For CCX and 11R Roaming
12102 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12103 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12104 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12105
12106 wpalMemoryCopy( pSendBuffer+usDataOffset,
12107 &enterBmpsReq,
12108 sizeof(enterBmpsReq));
12109
12110 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012112
12113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12117 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012118}/*WDI_ProcessEnterBmpsReq*/
12119
12120/**
12121 @brief Process Exit BMPS Request function (called when Main FSM
12122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012123
12124 @param pWDICtx: pointer to the WLAN DAL context
12125 pEventData: pointer to the event information structure
12126
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 @see
12128 @return Result of the function call
12129*/
12130WDI_Status
12131WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012132(
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 WDI_ControlBlockType* pWDICtx,
12134 WDI_EventInfoType* pEventData
12135)
12136{
12137 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12138 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
12142 tHalExitBmpsReqParams exitBmpsReq;
12143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12144
12145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 -------------------------------------------------------------------------*/
12148 if (( NULL == pEventData ) ||
12149 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12150 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12151 {
12152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 }
12157
12158 /*-----------------------------------------------------------------------
12159 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012163 sizeof(exitBmpsReq),
12164 &pSendBuffer, &usDataOffset, &usSendSize))||
12165 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12166 {
12167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12168 "Unable to get send buffer in Exit BMPS req %x %x %x",
12169 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 }
12173 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12174
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12176
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 wpalMemoryCopy( pSendBuffer+usDataOffset,
12178 &exitBmpsReq,
12179 sizeof(exitBmpsReq));
12180
12181 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183
12184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12188 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012189}/*WDI_ProcessExitBmpsReq*/
12190
12191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012194
12195 @param pWDICtx: pointer to the WLAN DAL context
12196 pEventData: pointer to the event information structure
12197
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 @see
12199 @return Result of the function call
12200*/
12201WDI_Status
12202WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012203(
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 WDI_ControlBlockType* pWDICtx,
12205 WDI_EventInfoType* pEventData
12206)
12207{
12208 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12209 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 wpt_uint16 usDataOffset = 0;
12212 wpt_uint16 usSendSize = 0;
12213 tUapsdReqParams enterUapsdReq;
12214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12215
12216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 -------------------------------------------------------------------------*/
12219 if (( NULL == pEventData ) ||
12220 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12221 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12222 {
12223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 }
12228
12229 /*-----------------------------------------------------------------------
12230 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 sizeof(enterUapsdReq),
12235 &pSendBuffer, &usDataOffset, &usSendSize))||
12236 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12237 {
12238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12239 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12240 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 }
12244
12245 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12246 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12247 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12248 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12249 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12250 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12251 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12252 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 wpalMemoryCopy( pSendBuffer+usDataOffset,
12256 &enterUapsdReq,
12257 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012258
12259 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261
12262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12266 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012267}/*WDI_ProcessEnterUapsdReq*/
12268
12269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012272
12273 @param pWDICtx: pointer to the WLAN DAL context
12274 pEventData: pointer to the event information structure
12275
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 @see
12277 @return Result of the function call
12278*/
12279WDI_Status
12280WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012281(
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 WDI_ControlBlockType* pWDICtx,
12283 WDI_EventInfoType* pEventData
12284)
12285{
12286 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 wpt_uint16 usDataOffset = 0;
12289 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012290 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12291 wpt_uint8 bssIdx = 0;
12292
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12294
12295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 -------------------------------------------------------------------------*/
12298 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012299 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12301 {
12302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 /*-----------------------------------------------------------------------
12309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012313 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012315 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 {
12317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12318 "Unable to get send buffer in Exit UAPSD req %x %x",
12319 pEventData, wdiExitUapsdRspCb);
12320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 }
12323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012324 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12325
12326 wpalMemoryCopy( pSendBuffer+usDataOffset,
12327 &bssIdx,
12328 sizeof(wpt_uint8));
12329
12330 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12331 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12332
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12337 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012338}/*WDI_ProcessExitUapsdReq*/
12339
12340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012343
12344 @param pWDICtx: pointer to the WLAN DAL context
12345 pEventData: pointer to the event information structure
12346
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 @see
12348 @return Result of the function call
12349*/
12350WDI_Status
12351WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012352(
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 WDI_ControlBlockType* pWDICtx,
12354 WDI_EventInfoType* pEventData
12355)
12356{
12357 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12358 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 wpt_uint16 usDataOffset = 0;
12361 wpt_uint16 usSendSize = 0;
12362 tUapsdInfo uapsdAcParamsReq;
12363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12364
12365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 -------------------------------------------------------------------------*/
12368 if (( NULL == pEventData ) ||
12369 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12370 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12371 {
12372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 }
12377
12378 /*-----------------------------------------------------------------------
12379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 sizeof(uapsdAcParamsReq),
12384 &pSendBuffer, &usDataOffset, &usSendSize))||
12385 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12386 {
12387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12389 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 }
12393
12394 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12395 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12396 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12397 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12398 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12399 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12400
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpalMemoryCopy( pSendBuffer+usDataOffset,
12402 &uapsdAcParamsReq,
12403 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012404
12405 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12412 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012413}/*WDI_ProcessSetUapsdAcParamsReq*/
12414
12415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012418
12419 @param pWDICtx: pointer to the WLAN DAL context
12420 pEventData: pointer to the event information structure
12421
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 @see
12423 @return Result of the function call
12424*/
12425WDI_Status
12426WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012427(
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 WDI_ControlBlockType* pWDICtx,
12429 WDI_EventInfoType* pEventData
12430)
12431{
12432 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12433 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 wpt_uint16 usDataOffset = 0;
12436 wpt_uint16 usSendSize = 0;
12437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12438
12439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012441 -------------------------------------------------------------------------*/
12442 if (( NULL == pEventData ) ||
12443 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12444 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12445 {
12446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 }
12451
12452 /*-----------------------------------------------------------------------
12453 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12458 &pSendBuffer, &usDataOffset, &usSendSize))||
12459 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12460 {
12461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12462 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12463 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 }
12467
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 wpalMemoryCopy( pSendBuffer+usDataOffset,
12469 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12470 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012471
12472 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012474
12475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12479 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012480}/*WDI_ProcessUpdateUapsdParamsReq*/
12481
12482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012485
12486 @param pWDICtx: pointer to the WLAN DAL context
12487 pEventData: pointer to the event information structure
12488
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 @see
12490 @return Result of the function call
12491*/
12492WDI_Status
12493WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012494(
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 WDI_ControlBlockType* pWDICtx,
12496 WDI_EventInfoType* pEventData
12497)
12498{
12499 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12500 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 wpt_uint16 usDataOffset = 0;
12503 wpt_uint16 usSendSize = 0;
12504 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12505
12506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12507
12508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 -------------------------------------------------------------------------*/
12511 if (( NULL == pEventData ) ||
12512 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12513 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12514 {
12515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 }
12520
12521 /*-----------------------------------------------------------------------
12522 Get message buffer
12523 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 sizeof(halRxpFilterParams),
12526 &pSendBuffer, &usDataOffset, &usSendSize))||
12527 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12528 {
12529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12530 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12531 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 }
12535
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12540
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 wpalMemoryCopy( pSendBuffer+usDataOffset,
12542 &halRxpFilterParams,
12543 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012544
12545 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012547
12548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12552 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012553}/*WDI_ProcessConfigureRxpFilterReq*/
12554
12555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012558
12559 @param pWDICtx: pointer to the WLAN DAL context
12560 pEventData: pointer to the event information structure
12561
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 @see
12563 @return Result of the function call
12564*/
12565WDI_Status
12566WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012567(
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 WDI_ControlBlockType* pWDICtx,
12569 WDI_EventInfoType* pEventData
12570)
12571{
12572 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12573 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 wpt_uint16 usDataOffset = 0;
12576 wpt_uint16 usSendSize = 0;
12577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12578
12579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 -------------------------------------------------------------------------*/
12582 if (( NULL == pEventData ) ||
12583 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12584 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12585 {
12586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 }
12591
12592 /*-----------------------------------------------------------------------
12593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12598 &pSendBuffer, &usDataOffset, &usSendSize))||
12599 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12600 {
12601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12602 "Unable to get send buffer in Set beacon filter req %x %x %x",
12603 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 }
12607
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 wpalMemoryCopy( pSendBuffer+usDataOffset,
12609 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12610 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12611 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12612 &pwdiBeaconFilterParams->aFilters[0],
12613 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012614
12615 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617
12618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12622 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012623}/*WDI_ProcessSetBeaconFilterReq*/
12624
12625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012628
12629 @param pWDICtx: pointer to the WLAN DAL context
12630 pEventData: pointer to the event information structure
12631
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 @see
12633 @return Result of the function call
12634*/
12635WDI_Status
12636WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012637(
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 WDI_ControlBlockType* pWDICtx,
12639 WDI_EventInfoType* pEventData
12640)
12641{
12642 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12643 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 wpt_uint16 usDataOffset = 0;
12646 wpt_uint16 usSendSize = 0;
12647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
12652 if (( NULL == pEventData ) ||
12653 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12654 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 }
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12668 &pSendBuffer, &usDataOffset, &usSendSize))||
12669 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12670 {
12671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12672 "Unable to get send buffer in remove beacon filter req %x %x %x",
12673 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 }
12677
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 wpalMemoryCopy( pSendBuffer+usDataOffset,
12679 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12680 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
12682 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684
12685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12689 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012690}
12691
12692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012695
12696 @param pWDICtx: pointer to the WLAN DAL context
12697 pEventData: pointer to the event information structure
12698
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 @see
12700 @return Result of the function call
12701*/
12702WDI_Status
12703WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012704(
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ControlBlockType* pWDICtx,
12706 WDI_EventInfoType* pEventData
12707)
12708{
12709 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12710 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 wpt_uint16 usDataOffset = 0;
12713 wpt_uint16 usSendSize = 0;
12714 tHalRSSIThresholds rssiThresholdsReq;
12715 WDI_Status ret_status = 0;
12716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12717
12718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 -------------------------------------------------------------------------*/
12721 if (( NULL == pEventData ) ||
12722 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12723 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 /*-----------------------------------------------------------------------
12732 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 sizeof(rssiThresholdsReq),
12737 &pSendBuffer, &usDataOffset, &usSendSize))||
12738 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12739 {
12740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12741 "Unable to get send buffer in remove beacon filter req %x %x %x",
12742 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 }
12746
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012755 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12767
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 wpalMemoryCopy( pSendBuffer+usDataOffset,
12769 &rssiThresholdsReq,
12770 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012771
12772 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774
12775 /*-------------------------------------------------------------------------
12776 Send Set threshold req to HAL
12777 -------------------------------------------------------------------------*/
12778 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12779 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12780 {
12781 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12782 // req. Then as a result of processing the threshold cross ind, we trigger
12783 // a Set threshold req, then we need to indicate to WDI that it needs to
12784 // go to busy state as a result of the indication as we sent a req in the
12785 // same WDI context.
12786 // Hence expected state transition is to busy.
12787 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12788 }
12789
12790 return ret_status;
12791}
12792
12793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012796
12797 @param pWDICtx: pointer to the WLAN DAL context
12798 pEventData: pointer to the event information structure
12799
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 @see
12801 @return Result of the function call
12802*/
12803WDI_Status
12804WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012805(
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 WDI_ControlBlockType* pWDICtx,
12807 WDI_EventInfoType* pEventData
12808)
12809{
12810 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12811 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 wpt_uint16 usDataOffset = 0;
12814 wpt_uint16 usSendSize = 0;
12815 tHalHostOffloadReq hostOffloadParams;
12816 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012817 wpt_uint8 ucCurrentBSSSesIdx = 0;
12818 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012819
12820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12821
12822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012824 -------------------------------------------------------------------------*/
12825 if (( NULL == pEventData ) ||
12826 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12827 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12828 {
12829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 }
12834
12835 /*-----------------------------------------------------------------------
12836 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12841 &pSendBuffer, &usDataOffset, &usSendSize))||
12842 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12843 {
12844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12845 "Unable to get send buffer in host offload req %x %x %x",
12846 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 }
12850
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012851 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12852 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12853 &pBSSSes);
12854 if ( NULL == pBSSSes )
12855 {
12856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012857 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012858 return WDI_STATUS_E_FAILURE;
12859 }
12860
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12862 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012863
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12865 {
12866 // ARP Offload
12867 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12868 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12869 4);
12870 }
12871 else
12872 {
12873 // NS Offload
12874 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12875 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12876 16);
12877
12878#ifdef WLAN_NS_OFFLOAD
12879 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12880 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12881 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12882 16);
12883 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12884 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12885 16);
12886 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12887 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12888 16);
12889 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12890 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12891 16);
12892 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12893 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12894 6);
12895 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12896 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12897 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898
Jeff Johnson295189b2012-06-20 16:38:30 -070012899#endif // WLAN_NS_OFFLOAD
12900 }
12901
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012902 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12903
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 // copy hostOffloadParams into pSendBuffer
12905 wpalMemoryCopy( pSendBuffer+usDataOffset,
12906 &hostOffloadParams,
12907 sizeof(hostOffloadParams));
12908
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012909 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012911 // copy nsOffloadParams into pSendBuffer
12912 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 &nsOffloadParams,
12914 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012915 }
12916 else
12917 {
12918#ifdef WLAN_NS_OFFLOAD
12919 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12920 {
12921 // copy nsOffloadParams into pSendBuffer
12922 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12923 &nsOffloadParams,
12924 sizeof(nsOffloadParams));
12925 }
12926#endif
12927 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012928
12929 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012931
12932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12936 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012937}/*WDI_ProcessHostOffloadReq*/
12938
12939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012942
12943 @param pWDICtx: pointer to the WLAN DAL context
12944 pEventData: pointer to the event information structure
12945
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 @see
12947 @return Result of the function call
12948*/
12949WDI_Status
12950WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012951(
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 WDI_ControlBlockType* pWDICtx,
12953 WDI_EventInfoType* pEventData
12954)
12955{
12956 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12957 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 wpt_uint16 usDataOffset = 0;
12960 wpt_uint16 usSendSize = 0;
12961 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012962 wpt_uint8 ucCurrentBSSSesIdx = 0;
12963 WDI_BSSSessionType* pBSSSes = NULL;
12964
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12966
12967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 -------------------------------------------------------------------------*/
12970 if (( NULL == pEventData ) ||
12971 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12972 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12973 {
12974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12975 "Invalid parameters in Keep Alive req");
12976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 }
12979
12980 /*-----------------------------------------------------------------------
12981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 sizeof(keepAliveReq),
12986 &pSendBuffer, &usDataOffset, &usSendSize))||
12987 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12988 {
12989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12990 "Unable to get send buffer in keep alive req %x %x %x",
12991 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 }
12995
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012996 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12997 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12998 &pBSSSes);
12999 if ( NULL == pBSSSes )
13000 {
13001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013002 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013003 return WDI_STATUS_E_FAILURE;
13004 }
13005
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13007 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013009 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013010
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13012 {
13013 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13014 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13015 HAL_IPV4_ADDR_LEN);
13016 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13017 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 wpalMemoryCopy(keepAliveReq.destMacAddr,
13020 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13021 HAL_MAC_ADDR_LEN);
13022 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013023
13024 wpalMemoryCopy( pSendBuffer+usDataOffset,
13025 &keepAliveReq,
13026 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013027
13028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13029 "Process keep alive req %d",sizeof(keepAliveReq));
13030
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13032 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13033
13034 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036
13037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13038 "Sending keep alive req to HAL");
13039
13040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13044 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013045}/*WDI_ProcessKeepAliveReq*/
13046
13047
13048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013051
13052 @param pWDICtx: pointer to the WLAN DAL context
13053 pEventData: pointer to the event information structure
13054
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 @see
13056 @return Result of the function call
13057*/
13058WDI_Status
13059WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013060(
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 WDI_ControlBlockType* pWDICtx,
13062 WDI_EventInfoType* pEventData
13063)
13064{
13065 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13066 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 wpt_uint16 usDataOffset = 0;
13069 wpt_uint16 usSendSize = 0;
13070 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013071 wpt_uint8 ucCurrentBSSSesIdx = 0;
13072 WDI_BSSSessionType* pBSSSes = NULL;
13073
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13075
13076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 -------------------------------------------------------------------------*/
13079 if (( NULL == pEventData ) ||
13080 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13081 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13082 {
13083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 }
13088
13089 /*-----------------------------------------------------------------------
13090 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 sizeof(wowlAddBcPtrnReq),
13095 &pSendBuffer, &usDataOffset, &usSendSize))||
13096 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13097 {
13098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13099 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13100 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013105 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13106 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13107 &pBSSSes);
13108 if ( NULL == pBSSSes )
13109 {
13110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013111 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013112 return WDI_STATUS_E_FAILURE;
13113 }
13114
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13123
13124 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13125 {
13126 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13127 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13128 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13129 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13130 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13131 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13132 }
13133 else
13134 {
13135 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13136 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13137 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13138 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13139 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13140 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13141
13142 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13143 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13144 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13145 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13146 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13147 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13148 }
13149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013150 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13151
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 wpalMemoryCopy( pSendBuffer+usDataOffset,
13153 &wowlAddBcPtrnReq,
13154 sizeof(wowlAddBcPtrnReq));
13155
13156 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013158
13159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13163 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013164}/*WDI_ProcessWowlAddBcPtrnReq*/
13165
13166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013169
13170 @param pWDICtx: pointer to the WLAN DAL context
13171 pEventData: pointer to the event information structure
13172
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 @see
13174 @return Result of the function call
13175*/
13176WDI_Status
13177WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013178(
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 WDI_ControlBlockType* pWDICtx,
13180 WDI_EventInfoType* pEventData
13181)
13182{
13183 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13184 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
13188 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013189 wpt_uint8 ucCurrentBSSSesIdx = 0;
13190 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13192
13193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 -------------------------------------------------------------------------*/
13196 if (( NULL == pEventData ) ||
13197 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13198 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13199 {
13200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 }
13205
13206 /*-----------------------------------------------------------------------
13207 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 sizeof(wowlDelBcPtrnReq),
13212 &pSendBuffer, &usDataOffset, &usSendSize))||
13213 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13214 {
13215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13216 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13217 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 }
13221
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013222 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13223 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13224 &pBSSSes);
13225 if ( NULL == pBSSSes )
13226 {
13227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013228 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013229 return WDI_STATUS_E_FAILURE;
13230 }
13231
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013234
13235 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13236
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 wpalMemoryCopy( pSendBuffer+usDataOffset,
13238 &wowlDelBcPtrnReq,
13239 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013240
13241 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013243
13244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13248 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013249}/*WDI_ProcessWowlDelBcPtrnReq*/
13250
13251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013254
13255 @param pWDICtx: pointer to the WLAN DAL context
13256 pEventData: pointer to the event information structure
13257
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 @see
13259 @return Result of the function call
13260*/
13261WDI_Status
13262WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013263(
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 WDI_ControlBlockType* pWDICtx,
13265 WDI_EventInfoType* pEventData
13266)
13267{
13268 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13269 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 wpt_uint16 usDataOffset = 0;
13272 wpt_uint16 usSendSize = 0;
13273 tHalWowlEnterParams wowlEnterReq;
13274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13275
13276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 -------------------------------------------------------------------------*/
13279 if (( NULL == pEventData ) ||
13280 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13281 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13282 {
13283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 }
13288
13289 /*-----------------------------------------------------------------------
13290 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 sizeof(wowlEnterReq),
13295 &pSendBuffer, &usDataOffset, &usSendSize))||
13296 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13297 {
13298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13299 "Unable to get send buffer in Wowl enter req %x %x %x",
13300 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 }
13304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13321
13322#ifdef WLAN_WAKEUP_EVENTS
13323 wowlEnterReq.ucWoWEAPIDRequestEnable =
13324 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13325
13326 wowlEnterReq.ucWoWEAPOL4WayEnable =
13327 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13328
13329 wowlEnterReq.ucWowNetScanOffloadMatch =
13330 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13331
13332 wowlEnterReq.ucWowGTKRekeyError =
13333 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13334
13335 wowlEnterReq.ucWoWBSSConnLoss =
13336 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13337#endif // WLAN_WAKEUP_EVENTS
13338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013339 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13340
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13342 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13343 sizeof(tSirMacAddr));
13344
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 wpalMemoryCopy( pSendBuffer+usDataOffset,
13346 &wowlEnterReq,
13347 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013348
13349 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351
13352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13356 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013357}/*WDI_ProcessWowlEnterReq*/
13358
13359/**
13360 @brief Process Wowl exit Request function (called when Main FSM
13361 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013362
13363 @param pWDICtx: pointer to the WLAN DAL context
13364 pEventData: pointer to the event information structure
13365
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 @see
13367 @return Result of the function call
13368*/
13369WDI_Status
13370WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013371(
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 WDI_ControlBlockType* pWDICtx,
13373 WDI_EventInfoType* pEventData
13374)
13375{
13376 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013377 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 wpt_uint16 usDataOffset = 0;
13380 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013381 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13383
13384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 -------------------------------------------------------------------------*/
13387 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013388 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13390 {
13391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 }
13396
13397 /*-----------------------------------------------------------------------
13398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013402 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013404 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13407 "Unable to get send buffer in Wowl Exit req %x %x",
13408 pEventData, wdiWowlExitCb);
13409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 }
13412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013413 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13414
13415 wpalMemoryCopy( pSendBuffer+usDataOffset,
13416 &wowlExitparams,
13417 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13422 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013423}/*WDI_ProcessWowlExitReq*/
13424
13425/**
13426 @brief Process Configure Apps Cpu Wakeup State Request function
13427 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013428
13429 @param pWDICtx: pointer to the WLAN DAL context
13430 pEventData: pointer to the event information structure
13431
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 @see
13433 @return Result of the function call
13434*/
13435WDI_Status
13436WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013437(
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 WDI_ControlBlockType* pWDICtx,
13439 WDI_EventInfoType* pEventData
13440)
13441{
13442 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13443 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 wpt_uint16 usDataOffset = 0;
13446 wpt_uint16 usSendSize = 0;
13447 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13449
13450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 -------------------------------------------------------------------------*/
13453 if (( NULL == pEventData ) ||
13454 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13455 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13456 {
13457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 }
13462
13463 /*-----------------------------------------------------------------------
13464 Get message buffer
13465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 sizeof(halCfgAppsCpuWakeupStateReqParams),
13468 &pSendBuffer, &usDataOffset, &usSendSize))||
13469 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13470 {
13471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13472 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13473 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 }
13477
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13480
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 wpalMemoryCopy( pSendBuffer+usDataOffset,
13482 &halCfgAppsCpuWakeupStateReqParams,
13483 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
13485 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013487
13488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13492 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13493 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013494}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13495
13496#ifdef WLAN_FEATURE_VOWIFI_11R
13497/**
13498 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013500
13501 @param pWDICtx: pointer to the WLAN DAL context
13502 pEventData: pointer to the event information structure
13503
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 @see
13505 @return Result of the function call
13506*/
13507WDI_Status
13508WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013509(
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 WDI_ControlBlockType* pWDICtx,
13511 WDI_EventInfoType* pEventData
13512)
13513{
13514 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13515 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 wpt_uint16 usDataOffset = 0;
13520 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 wpt_macAddr macBSSID;
13523 tAggrAddTsReq halAggrAddTsReq;
13524 int i;
13525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13526
13527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 -------------------------------------------------------------------------*/
13530 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13531 ( NULL == pEventData->pCBfnc ))
13532 {
13533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 }
13538 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13539 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13540 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13541 /*-------------------------------------------------------------------------
13542 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -------------------------------------------------------------------------*/
13545 wpalMutexAcquire(&pWDICtx->wptMutex);
13546
13547 /*------------------------------------------------------------------------
13548 Find the BSS for which the request is made and identify WDI session
13549 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13551 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 &macBSSID))
13553 {
13554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13555 "This station does not exist in the WDI Station Table %d");
13556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 }
13559
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13561 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13564 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13565 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013566
13567 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013570
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 /*------------------------------------------------------------------------
13572 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 ------------------------------------------------------------------------*/
13575 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13578 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13579 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013580
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 }
13585
13586 wpalMutexRelease(&pWDICtx->wptMutex);
13587 /*-----------------------------------------------------------------------
13588 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 sizeof(tAggrAddTsParams),
13593 &pSendBuffer, &usDataOffset, &usSendSize))||
13594 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13595 {
13596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13597 "Unable to get send buffer in set bss key req %x %x %x",
13598 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 }
13602
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13607
13608 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13609 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13616 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13619 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13622 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13625 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13628 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13631 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13634 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13637 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013638 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642
13643
13644 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013654 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13674 }
13675
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wpalMemoryCopy( pSendBuffer+usDataOffset,
13677 &halAggrAddTsReq,
13678 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013679
13680 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013682
13683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013689}/*WDI_ProcessAggrAddTSpecReq*/
13690#endif /* WLAN_FEATURE_VOWIFI_11R */
13691
13692/**
13693 @brief Process Shutdown Request function (called when Main FSM
13694 allows it)
13695
13696 @param pWDICtx: pointer to the WLAN DAL context
13697 pEventData: pointer to the event information structure
13698
13699 @see
13700 @return Result of the function call
13701*/
13702WDI_Status
13703WDI_ProcessShutdownReq
13704(
13705 WDI_ControlBlockType* pWDICtx,
13706 WDI_EventInfoType* pEventData
13707 )
13708{
13709 wpt_status wptStatus;
13710
13711
13712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13713
13714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 -------------------------------------------------------------------------*/
13717 if ( NULL == pEventData )
13718 {
13719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 WDI_ASSERT(0);
13722 return WDI_STATUS_E_FAILURE;
13723 }
13724
13725 wpalMutexAcquire(&pWDICtx->wptMutex);
13726
13727
13728 gWDIInitialized = eWLAN_PAL_FALSE;
13729 /*! TO DO: stop the data services */
13730 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13731 {
13732 /*Stop the STA Table !UT- check this logic again
13733 It is safer to do it here than on the response - because a stop is imminent*/
13734 WDI_STATableStop(pWDICtx);
13735
13736 /* Stop Transport Driver, DXE */
13737 WDTS_Stop(pWDICtx);
13738 }
13739
13740 /*Clear all pending request*/
13741 WDI_ClearPendingRequests(pWDICtx);
13742 /* Close Data transport*/
13743 /* FTM mode does not open Data Path */
13744 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13745 {
13746 WDTS_Close(pWDICtx);
13747 }
13748 /*Close the STA Table !UT- check this logic again*/
13749 WDI_STATableClose(pWDICtx);
13750 /*close the PAL */
13751 wptStatus = wpalClose(pWDICtx->pPALContext);
13752 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13753 {
13754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13755 "Failed to wpal Close %d", wptStatus);
13756 WDI_ASSERT(0);
13757 }
13758
13759 /*Transition back to init state*/
13760 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13761
13762 wpalMutexRelease(&pWDICtx->wptMutex);
13763
13764 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013766
13767
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013769}/*WDI_ProcessShutdownReq*/
13770
13771/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013773========================================================================*/
13774
13775/**
13776 @brief Process Start Response function (called when a response
13777 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013778
13779 @param pWDICtx: pointer to the WLAN DAL context
13780 pEventData: pointer to the event information structure
13781
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 @see
13783 @return Result of the function call
13784*/
13785WDI_Status
13786WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013787(
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 WDI_ControlBlockType* pWDICtx,
13789 WDI_EventInfoType* pEventData
13790)
13791{
13792 WDI_StartRspParamsType wdiRspParams;
13793 WDI_StartRspCb wdiStartRspCb = NULL;
13794
13795 tHalMacStartRspParams* startRspParams;
13796
13797#ifndef HAL_SELF_STA_PER_BSS
13798 WDI_AddStaParams wdiAddSTAParam = {0};
13799#endif
13800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13801
Jeff Johnsone7245742012-09-05 17:12:55 -070013802 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
13806 if (( NULL == pEventData ) ||
13807 ( NULL == pEventData->pEventData) ||
13808 ( NULL == wdiStartRspCb ))
13809 {
13810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 }
13815
13816 /*-------------------------------------------------------------------------
13817 Extract response and send it to UMAC
13818 -------------------------------------------------------------------------*/
13819 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13820 {
13821 // not enough data was received
13822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13823 "Invalid response length in Start Resp Expect %x Rcvd %x",
13824 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 }
13828
13829 /*-------------------------------------------------------------------------
13830 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 -------------------------------------------------------------------------*/
13833 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13834
13835 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13836 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13837 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13838 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13839 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13840 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13841 wdiRspParams.wlanReportedVersion.major =
13842 startRspParams->wcnssWlanVersion.major;
13843 wdiRspParams.wlanReportedVersion.minor =
13844 startRspParams->wcnssWlanVersion.minor;
13845 wdiRspParams.wlanReportedVersion.version =
13846 startRspParams->wcnssWlanVersion.version;
13847 wdiRspParams.wlanReportedVersion.revision =
13848 startRspParams->wcnssWlanVersion.revision;
13849 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13850 startRspParams->wcnssCrmVersionString,
13851 sizeof(wdiRspParams.wcnssSoftwareVersion));
13852 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13853 startRspParams->wcnssWlanVersionString,
13854 sizeof(wdiRspParams.wcnssHardwareVersion));
13855 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13856
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013857 /*Save the HAL Version*/
13858 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13859
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 wpalMutexAcquire(&pWDICtx->wptMutex);
13861 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13862 {
13863 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13864
13865 /*Cache the start response for further use*/
13866 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 sizeof(pWDICtx->wdiCachedStartRspParams));
13869
13870 }
13871 else
13872 {
13873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13874 "Failed to start device with status %s(%d)",
13875 WDI_getHALStatusMsgString(startRspParams->status),
13876 startRspParams->status);
13877
13878 /*Set the expected state transition to stopped - because the start has
13879 failed*/
13880 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13881
13882 wpalMutexRelease(&pWDICtx->wptMutex);
13883
13884 /*Notify UMAC*/
13885 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013886
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13888
13889 /*Although the response is an error - it was processed by our function
13890 so as far as the caller is concerned this is a succesful reponse processing*/
13891 return WDI_STATUS_SUCCESS;
13892 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013893
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 wpalMutexRelease(&pWDICtx->wptMutex);
13895
13896 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13897 {
13898 /* FTM mode does not need to execute below */
13899 /* Notify UMAC */
13900 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13901 return WDI_STATUS_SUCCESS;
13902 }
13903
13904 /* START the Data transport */
13905 WDTS_startTransport(pWDICtx);
13906
13907 /*Start the STA Table !- check this logic again*/
13908 WDI_STATableStart(pWDICtx);
13909
13910#ifndef HAL_SELF_STA_PER_BSS
13911 /* Store the Self STA Index */
13912 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13913
13914 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13915 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13916 WDI_MAC_ADDR_LEN);
13917
13918 /* At this point add the self-STA */
13919
13920 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13921 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13922 /*! TO DO: wdiAddSTAParam.dpuSig */
13923 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13924 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13925 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13926
13927 //all DPU indices are the same for self STA
13928 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13929 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013930 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13932 WDI_MAC_ADDR_LEN);
13933 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13934 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13935
13936 /* Note: Since we don't get an explicit config STA request for self STA, we
13937 add the self STA upon receiving the Start response message. But the
13938 self STA entry in the table is deleted when WDI gets an explicit delete STA
13939 request */
13940 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13941#endif
13942
13943 /*Notify UMAC*/
13944 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13945
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947}/*WDI_ProcessStartRsp*/
13948
13949
13950/**
13951 @brief Process Stop Response function (called when a response
13952 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013953
13954 @param pWDICtx: pointer to the WLAN DAL context
13955 pEventData: pointer to the event information structure
13956
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 @see
13958 @return Result of the function call
13959*/
13960WDI_Status
13961WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013962(
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 WDI_ControlBlockType* pWDICtx,
13964 WDI_EventInfoType* pEventData
13965)
13966{
13967 WDI_Status wdiStatus;
13968 WDI_StopRspCb wdiStopRspCb = NULL;
13969
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13972
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 -------------------------------------------------------------------------*/
13977 if (( NULL == pEventData ) ||
13978 ( NULL == pEventData->pEventData) ||
13979 ( NULL == wdiStopRspCb ))
13980 {
13981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 }
13986
13987 /*-------------------------------------------------------------------------
13988 Extract response and send it to UMAC
13989 -------------------------------------------------------------------------*/
13990 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13991 {
13992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13993 "Invalid response length in Stop Resp %x %x",
13994 pEventData->uEventDataSize);
13995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 }
13998
13999 /*-------------------------------------------------------------------------
14000 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14004 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 sizeof(halMacStopRspMsg.stopRspParams));
14006
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014008
14009 wpalMutexAcquire(&pWDICtx->wptMutex);
14010
14011 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 --------------------------------------------------------------------------*/
14014 if ( WDI_STATUS_SUCCESS != wdiStatus )
14015 {
14016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14017 "Failed to stop the device with status %s (%d)",
14018 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14019 halMacStopRspMsg.stopRspParams.status);
14020
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14022
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014026
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14028
14029 /*Transition now as WDI may get preempted imediately after it sends
14030 up the Stop Response and it will not get to process the state transition
14031 from Main Rsp function*/
14032 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14033 wpalMutexRelease(&pWDICtx->wptMutex);
14034
14035 /*! TO DO: - STOP the Data transport */
14036
14037 /*Notify UMAC*/
14038 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14039
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014041}/*WDI_ProcessStopRsp*/
14042
14043/**
14044 @brief Process Close Rsp function (called when a response
14045 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014046
14047 @param pWDICtx: pointer to the WLAN DAL context
14048 pEventData: pointer to the event information structure
14049
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 @see
14051 @return Result of the function call
14052*/
14053WDI_Status
14054WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014055(
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 WDI_ControlBlockType* pWDICtx,
14057 WDI_EventInfoType* pEventData
14058)
14059{
14060 /*There is no close response comming from HAL - function just kept for
14061 simmetry */
14062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064}/*WDI_ProcessCloseRsp*/
14065
14066
14067/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014069============================================================================*/
14070
14071/**
14072 @brief Process Init Scan Rsp function (called when a response
14073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014074
14075 @param pWDICtx: pointer to the WLAN DAL context
14076 pEventData: pointer to the event information structure
14077
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 @see
14079 @return Result of the function call
14080*/
14081WDI_Status
14082WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014083(
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 WDI_ControlBlockType* pWDICtx,
14085 WDI_EventInfoType* pEventData
14086)
14087{
14088 WDI_Status wdiStatus;
14089 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080014091 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14093
14094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 -------------------------------------------------------------------------*/
14097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14098 ( NULL == pEventData->pEventData))
14099 {
14100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 }
14105
14106 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14107 if( NULL == wdiInitScanRspCb)
14108 {
14109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014110 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 }
14114
14115 /*-------------------------------------------------------------------------
14116 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14120 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 sizeof(halInitScanRspMsg.initScanRspParams));
14122
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014124
14125 if ( pWDICtx->bInBmps )
14126 {
14127 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080014128 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14129 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14131 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14132 WDI_ASSERT(0);
14133 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 }
14135
14136 /*Notify UMAC*/
14137 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14138
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140}/*WDI_ProcessInitScanRsp*/
14141
14142
14143/**
14144 @brief Process Start Scan Rsp function (called when a response
14145 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014146
14147 @param pWDICtx: pointer to the WLAN DAL context
14148 pEventData: pointer to the event information structure
14149
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 @see
14151 @return Result of the function call
14152*/
14153WDI_Status
14154WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014155(
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 WDI_ControlBlockType* pWDICtx,
14157 WDI_EventInfoType* pEventData
14158)
14159{
14160 WDI_StartScanRspParamsType wdiStartScanParams;
14161 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014162
14163 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14165
14166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 -------------------------------------------------------------------------*/
14169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14170 ( NULL == pEventData->pEventData))
14171 {
14172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 }
14177
14178 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14179 if( NULL == wdiStartScanRspCb)
14180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014182 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 }
14186
14187 /*-------------------------------------------------------------------------
14188 Extract response and send it to UMAC
14189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14191 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 sizeof(halStartScanRspMsg.startScanRspParams));
14193
14194 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14195 halStartScanRspMsg.startScanRspParams.status);
14196#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014199 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 halStartScanRspMsg.startScanRspParams.startTSF,
14201 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014202#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014203
14204 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14205 {
14206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14207 "Start scan failed with status %s (%d)",
14208 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14209 halStartScanRspMsg.startScanRspParams.status);
14210 /* send the status to UMAC, don't return from here*/
14211 }
14212
14213 /*Notify UMAC*/
14214 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14215
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014217
14218}/*WDI_ProcessStartScanRsp*/
14219
14220
14221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014222 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014224
14225 @param pWDICtx: pointer to the WLAN DAL context
14226 pEventData: pointer to the event information structure
14227
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 @see
14229 @return Result of the function call
14230*/
14231WDI_Status
14232WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014233(
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 WDI_ControlBlockType* pWDICtx,
14235 WDI_EventInfoType* pEventData
14236)
14237{
14238 WDI_Status wdiStatus;
14239 tHalEndScanRspMsg halEndScanRspMsg;
14240 WDI_EndScanRspCb wdiEndScanRspCb;
14241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14242
14243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 -------------------------------------------------------------------------*/
14246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14247 ( NULL == pEventData->pEventData))
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 }
14254
14255 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14256
14257 /*-------------------------------------------------------------------------
14258 Extract response and send it to UMAC
14259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14261 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 sizeof(halEndScanRspMsg.endScanRspParams));
14263
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014265
14266 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14267 {
14268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14269 "End Scan failed with status %s (%d )",
14270 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14271 halEndScanRspMsg.endScanRspParams.status);
14272 /* send the status to UMAC, don't return from here*/
14273 }
14274
14275 /*Notify UMAC*/
14276 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14277
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014279}/*WDI_ProcessEndScanRsp*/
14280
14281
14282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014285
14286 @param pWDICtx: pointer to the WLAN DAL context
14287 pEventData: pointer to the event information structure
14288
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 @see
14290 @return Result of the function call
14291*/
14292WDI_Status
14293WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014294(
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 WDI_ControlBlockType* pWDICtx,
14296 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014297)
Jeff Johnson295189b2012-06-20 16:38:30 -070014298{
14299 WDI_Status wdiStatus;
14300 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301
14302 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14304
14305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 -------------------------------------------------------------------------*/
14308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14309 ( NULL == pEventData->pEventData))
14310 {
14311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 }
14316
14317 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14318
14319 /*-------------------------------------------------------------------------
14320 Extract response and send it to UMAC
14321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14323 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14325
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014327
14328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 halFinishScanRspMsg.finishScanRspParams.status);
14331
14332 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14333 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14334 {
14335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14336 "Finish Scan failed with status %s (%d)",
14337 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14338 halFinishScanRspMsg.finishScanRspParams.status);
14339 /* send the status to UMAC, don't return from here*/
14340 }
14341
14342 /*Notify UMAC*/
14343 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14344
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014346}/*WDI_ProcessFinishScanRsp*/
14347
14348/**
14349 @brief Process Join Response function (called when a response
14350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014351
14352 @param pWDICtx: pointer to the WLAN DAL context
14353 pEventData: pointer to the event information structure
14354
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 @see
14356 @return Result of the function call
14357*/
14358WDI_Status
14359WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014360(
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 WDI_ControlBlockType* pWDICtx,
14362 WDI_EventInfoType* pEventData
14363)
14364{
14365 WDI_Status wdiStatus;
14366 WDI_JoinRspCb wdiJoinRspCb;
14367 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014368
14369 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14371
14372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 -------------------------------------------------------------------------*/
14375 if (( NULL == pWDICtx ) ||
14376 ( NULL == pWDICtx->pfncRspCB ) ||
14377 ( NULL == pEventData ) ||
14378 ( NULL == pEventData->pEventData))
14379 {
14380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 }
14385
14386 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14387
14388 /*-------------------------------------------------------------------------
14389 Extract response and send it to UMAC
14390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14392 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 sizeof(halJoinRspMsg.joinRspParams));
14394
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014396
14397 wpalMutexAcquire(&pWDICtx->wptMutex);
14398
14399 /*-----------------------------------------------------------------------
14400 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14408 "association no longer in progress %d - mysterious HAL response",
14409 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 }
14415
14416 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14417
14418 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 -----------------------------------------------------------------------*/
14421 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14422 {
14423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14424 "Join only allowed in Joining state - failure state is %d "
14425 "strange HAL response", pBSSSes->wdiAssocState);
14426
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14428
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 }
14432
14433
14434 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -----------------------------------------------------------------------*/
14437 if ( WDI_STATUS_SUCCESS != wdiStatus )
14438 {
14439 /*Association was failed by HAL - remove session*/
14440 WDI_DeleteSession(pWDICtx, pBSSSes);
14441
14442 /*Association no longer in progress */
14443 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14444
14445 /*Association no longer in progress - prepare pending assoc for processing*/
14446 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014447
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 }
14449 else
14450 {
14451 /*Transition to state Joining - this may be redundant as we are supposed
14452 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 }
14455
14456 wpalMutexRelease(&pWDICtx->wptMutex);
14457
14458 /*Notify UMAC*/
14459 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14460
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014462}/*WDI_ProcessJoinRsp*/
14463
14464
14465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014468
14469 @param pWDICtx: pointer to the WLAN DAL context
14470 pEventData: pointer to the event information structure
14471
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 @see
14473 @return Result of the function call
14474*/
14475WDI_Status
14476WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014477(
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 WDI_ControlBlockType* pWDICtx,
14479 WDI_EventInfoType* pEventData
14480)
14481{
14482 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14483 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 WDI_BSSSessionType* pBSSSes = NULL;
14486
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14489 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014490
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14492
14493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 -------------------------------------------------------------------------*/
14496 if (( NULL == pEventData ) ||
14497 ( NULL == pEventData->pEventData))
14498 {
14499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 }
14504
14505 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14506
14507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14511 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 sizeof(halConfigBssRspMsg.configBssRspParams));
14513
14514 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14515 halConfigBssRspMsg.configBssRspParams.status);
14516 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14520 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014521
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014523
14524 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014526
14527 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014529
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014531
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14535 #endif
14536 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14537 halConfigBssRspMsg.configBssRspParams.staMac,
14538 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014539
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 wpalMutexAcquire(&pWDICtx->wptMutex);
14541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14545 wdiConfigBSSParams.macBSSID,
14546 &pBSSSes);
14547
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 /*-----------------------------------------------------------------------
14549 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -----------------------------------------------------------------------*/
14552 if ( NULL == pBSSSes )
14553 {
14554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14555 "Association sequence for this BSS does not yet exist "
14556 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014557
14558 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14559
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014563
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 /*Save data for this BSS*/
14565 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14566 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014569 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14577 pBSSSes->bcastStaIdx =
14578 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014579
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014581
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 /*-------------------------------------------------------------------------
14583 Add Peer STA
14584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14587 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wdiAddSTAParam.ucHTCapable =
14593 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14594 wdiAddSTAParam.ucStaType =
14595 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14596
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14599 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014601
14602 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14603 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14604 WDI_MAC_ADDR_LEN);
14605
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014619
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14621 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014622
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14624 /*-------------------------------------------------------------------------
14625 Add Broadcast STA only in AP mode
14626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_BSS_OPERATIONAL_MODE_AP )
14629 {
14630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14631 "Add BCAST STA to table for index: %d",
14632 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014633
14634 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014636
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14638 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14639 }
14640 wpalMutexRelease(&pWDICtx->wptMutex);
14641 }
14642 else
14643 {
14644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14645 "Config BSS RSP failed with status : %s(%d)",
14646 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 halConfigBssRspMsg.configBssRspParams.status);
14649
Jeff Johnsone7245742012-09-05 17:12:55 -070014650
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 /*Association was failed by HAL - remove session*/
14652 WDI_DeleteSession(pWDICtx, pBSSSes);
14653
14654 /*Association no longer in progress */
14655 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14656
14657 /*Association no longer in progress - prepare pending assoc for processing*/
14658 WDI_DequeueAssocRequest(pWDICtx);
14659
14660 }
14661
14662 /*Notify UMAC*/
14663 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14664
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014666}/*WDI_ProcessConfigBSSRsp*/
14667
14668
14669/**
14670 @brief Process Del BSS Response function (called when a response
14671 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014672
14673 @param pWDICtx: pointer to the WLAN DAL context
14674 pEventData: pointer to the event information structure
14675
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 @see
14677 @return Result of the function call
14678*/
14679WDI_Status
14680WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014681(
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 WDI_ControlBlockType* pWDICtx,
14683 WDI_EventInfoType* pEventData
14684)
14685{
14686 WDI_DelBSSRspParamsType wdiDelBSSParams;
14687 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 WDI_BSSSessionType* pBSSSes = NULL;
14690
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14693
14694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
14697 if (( NULL == pEventData ) ||
14698 ( NULL == pEventData->pEventData))
14699 {
14700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 }
14705
14706 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14707
14708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14712 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 sizeof(halDelBssRspMsg.deleteBssRspParams));
14714
14715
14716 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718
14719 wpalMutexAcquire(&pWDICtx->wptMutex);
14720
14721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14725 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14726 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014727
14728 /*-----------------------------------------------------------------------
14729 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 -----------------------------------------------------------------------*/
14732 if ( NULL == pBSSSes )
14733 {
14734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14735 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014736 "association no longer in progress - mysterious HAL response");
14737
14738 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14739
14740 wpalMutexRelease(&pWDICtx->wptMutex);
14741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014743
14744 /*Extract BSSID for the response to UMAC*/
14745 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14746 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14747
14748 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14749
14750 /*-----------------------------------------------------------------------
14751 The current session will be deleted
14752 -----------------------------------------------------------------------*/
14753 WDI_DeleteSession(pWDICtx, pBSSSes);
14754
14755
14756 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14757 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014759 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014760 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014761
14762 /* Delete the STA's in this BSS */
14763 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14764
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 wpalMutexRelease(&pWDICtx->wptMutex);
14766
14767 /*Notify UMAC*/
14768 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14769
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014771}/*WDI_ProcessDelBSSRsp*/
14772
14773/**
14774 @brief Process Post Assoc Rsp function (called when a response
14775 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014776
14777 @param pWDICtx: pointer to the WLAN DAL context
14778 pEventData: pointer to the event information structure
14779
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 @see
14781 @return Result of the function call
14782*/
14783WDI_Status
14784WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014785(
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 WDI_ControlBlockType* pWDICtx,
14787 WDI_EventInfoType* pEventData
14788)
14789{
14790 WDI_PostAssocRspParamsType wdiPostAssocParams;
14791 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14796
14797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 -------------------------------------------------------------------------*/
14800 if (( NULL == pEventData ) ||
14801 ( NULL == pEventData->pEventData))
14802 {
14803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 }
14808
14809 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14810
14811 /*-------------------------------------------------------------------------
14812 Extract response and send it to UMAC
14813 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14815 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 sizeof(halPostAssocRspMsg.postAssocRspParams));
14817
14818 /*Extract the Post Assoc STA Params */
14819
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014822 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14826
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 wdiPostAssocParams.wdiStatus =
14828 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014829
14830 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14831 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14833 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 WDI_MAC_ADDR_LEN);
14835
14836 /* Extract Post Assoc BSS Params */
14837
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14839 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14840 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014841
14842 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14843 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14846 .macSTA, WDI_MAC_ADDR_LEN);
14847
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14850
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14853
14854 wdiPostAssocParams.bssParams.ucBSSIdx =
14855 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14856
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14859
14860 wpalMutexAcquire(&pWDICtx->wptMutex);
14861
14862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014868
14869 /*-----------------------------------------------------------------------
14870 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -----------------------------------------------------------------------*/
14873 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14878 "Association sequence for this BSS does not yet exist or "
14879 "association no longer in progress - mysterious HAL response");
14880
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14882
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 }
14886
14887 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 -----------------------------------------------------------------------*/
14890 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14893 "Post Assoc not allowed before JOIN - failing request "
14894 "strange HAL response");
14895
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14897
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 }
14901
14902 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 -----------------------------------------------------------------------*/
14905 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14906 {
14907 /*Association was failed by HAL - remove session*/
14908 WDI_DeleteSession(pWDICtx, pBSSSes);
14909 }
14910 else
14911 {
14912 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914
14915 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14924
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14927 }
14928
14929 /*Association no longer in progress */
14930 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14931
14932 /*Association no longer in progress - prepare pending assoc for processing*/
14933 WDI_DequeueAssocRequest(pWDICtx);
14934
14935 wpalMutexRelease(&pWDICtx->wptMutex);
14936
14937 /*Notify UMAC*/
14938 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14939
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941}/*WDI_ProcessPostAssocRsp*/
14942
14943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014946
14947 @param pWDICtx: pointer to the WLAN DAL context
14948 pEventData: pointer to the event information structure
14949
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 @see
14951 @return Result of the function call
14952*/
14953WDI_Status
14954WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014955(
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_ControlBlockType* pWDICtx,
14957 WDI_EventInfoType* pEventData
14958)
14959{
14960 WDI_DelSTARspParamsType wdiDelSTARsp;
14961 WDI_DelSTARspCb wdiDelSTARspCb;
14962 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
14969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14970 ( NULL == pEventData->pEventData))
14971 {
14972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 }
14977
14978 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14979
14980 /*-------------------------------------------------------------------------
14981 Extract response and send it to UMAC
14982 -------------------------------------------------------------------------*/
14983 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 sizeof(halDelStaRspMsg.delStaRspParams));
14986
14987 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 wdiDelSTARsp.wdiStatus =
14989 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014990
14991 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14992
14993 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14994 if(staType == WDI_STA_ENTRY_SELF)
14995 {
14996 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14997
14998 /* At this point add the self-STA */
14999
15000 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15001 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15002 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15003
15004#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15005#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15006
15007 //all DPU indices are the same for self STA
15008 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15009 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15010 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15011 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15012 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15013 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015014
15015 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 }
15017 else
15018 {
15019 //Delete the station in the table
15020 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15021 }
15022
15023 /*Notify UMAC*/
15024 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15025
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015027}/*WDI_ProcessDelSTARsp*/
15028
15029
15030/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015031 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015032==========================================================================*/
15033
15034/**
15035 @brief Process Set BSS Key Rsp function (called when a response
15036 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015037
15038 @param pWDICtx: pointer to the WLAN DAL context
15039 pEventData: pointer to the event information structure
15040
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 @see
15042 @return Result of the function call
15043*/
15044WDI_Status
15045WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015046(
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 WDI_ControlBlockType* pWDICtx,
15048 WDI_EventInfoType* pEventData
15049)
15050{
15051 WDI_Status wdiStatus;
15052 eHalStatus halStatus;
15053 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15055
15056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 -------------------------------------------------------------------------*/
15059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15060 ( NULL == pEventData->pEventData))
15061 {
15062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 }
15067
15068 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15069
15070 /*-------------------------------------------------------------------------
15071 Extract response and send it to UMAC
15072 -------------------------------------------------------------------------*/
15073 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015075
15076 if ( eHAL_STATUS_SUCCESS != halStatus )
15077 {
15078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15079 "Set BSS Key failed with status %s (%d)",
15080 WDI_getHALStatusMsgString(halStatus),
15081 halStatus);
15082 /* send the status to UMAC, don't return from here*/
15083 }
15084
15085 /*Notify UMAC*/
15086 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15087
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015089}/*WDI_ProcessSetBssKeyRsp*/
15090
15091/**
15092 @brief Process Remove BSS Key Rsp function (called when a response
15093 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015094
15095 @param pWDICtx: pointer to the WLAN DAL context
15096 pEventData: pointer to the event information structure
15097
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 @see
15099 @return Result of the function call
15100*/
15101WDI_Status
15102WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015103(
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 WDI_ControlBlockType* pWDICtx,
15105 WDI_EventInfoType* pEventData
15106)
15107{
15108 WDI_Status wdiStatus;
15109 eHalStatus halStatus;
15110 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15112
15113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 -------------------------------------------------------------------------*/
15116 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15117 ( NULL == pEventData->pEventData))
15118 {
15119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 }
15124
15125 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15126
15127 /*-------------------------------------------------------------------------
15128 Extract response and send it to UMAC
15129 -------------------------------------------------------------------------*/
15130 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015132
15133 if ( eHAL_STATUS_SUCCESS != halStatus )
15134 {
15135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15136 "Remove BSS Key failed with status %s (%d )",
15137 WDI_getHALStatusMsgString(halStatus),
15138 halStatus);
15139 /* send the status to UMAC, don't return from here*/
15140 }
15141
15142 /*Notify UMAC*/
15143 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15144
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015146}/*WDI_ProcessSetBssKeyRsp*/
15147
15148
15149/**
15150 @brief Process Set STA Key Rsp function (called when a response
15151 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015152
15153 @param pWDICtx: pointer to the WLAN DAL context
15154 pEventData: pointer to the event information structure
15155
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 @see
15157 @return Result of the function call
15158*/
15159WDI_Status
15160WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015161(
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_ControlBlockType* pWDICtx,
15163 WDI_EventInfoType* pEventData
15164)
15165{
15166 WDI_Status wdiStatus;
15167 eHalStatus halStatus;
15168 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15170
15171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 -------------------------------------------------------------------------*/
15174 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15175 ( NULL == pEventData->pEventData))
15176 {
15177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 }
15182
15183 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15184
15185 /*-------------------------------------------------------------------------
15186 Extract response and send it to UMAC
15187 -------------------------------------------------------------------------*/
15188 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015190
15191 if ( eHAL_STATUS_SUCCESS != halStatus )
15192 {
15193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15194 "Set STA Key failed with status %s (%d)",
15195 WDI_getHALStatusMsgString(halStatus),
15196 halStatus);
15197 /* send the status to UMAC, don't return from here*/
15198 }
15199
15200 /*Notify UMAC*/
15201 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15202
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015204}/*WDI_ProcessSetSTAKeyRsp*/
15205
15206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015209
15210 @param pWDICtx: pointer to the WLAN DAL context
15211 pEventData: pointer to the event information structure
15212
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 @see
15214 @return Result of the function call
15215*/
15216WDI_Status
15217WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015218(
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 WDI_ControlBlockType* pWDICtx,
15220 WDI_EventInfoType* pEventData
15221)
15222{
15223 WDI_Status wdiStatus;
15224 eHalStatus halStatus;
15225 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15227
15228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 -------------------------------------------------------------------------*/
15231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15232 ( NULL == pEventData->pEventData))
15233 {
15234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 }
15239
15240 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15241
15242 /*-------------------------------------------------------------------------
15243 Extract response and send it to UMAC
15244 -------------------------------------------------------------------------*/
15245 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015247
15248 if ( eHAL_STATUS_SUCCESS != halStatus )
15249 {
15250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15251 "Remove STA Key failed with status %s (%d)",
15252 WDI_getHALStatusMsgString(halStatus),
15253 halStatus);
15254 /* send the status to UMAC, don't return from here*/
15255 }
15256
15257 /*Notify UMAC*/
15258 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15259
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015261}/*WDI_ProcessRemoveStaKeyRsp*/
15262
15263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015266
15267 @param pWDICtx: pointer to the WLAN DAL context
15268 pEventData: pointer to the event information structure
15269
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 @see
15271 @return Result of the function call
15272*/
15273WDI_Status
15274WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015275(
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_ControlBlockType* pWDICtx,
15277 WDI_EventInfoType* pEventData
15278)
15279{
15280 WDI_Status wdiStatus;
15281 eHalStatus halStatus;
15282 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15284
15285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 -------------------------------------------------------------------------*/
15288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15289 ( NULL == pEventData->pEventData))
15290 {
15291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 }
15296
15297 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15298
15299 /*-------------------------------------------------------------------------
15300 Extract response and send it to UMAC
15301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wpalMemoryCopy( &halStatus,
15303 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 sizeof(halStatus));
15305
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015307
15308 if ( eHAL_STATUS_SUCCESS != halStatus )
15309 {
15310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15311 "Set STA Key failed with status %s (%d)",
15312 WDI_getHALStatusMsgString(halStatus),
15313 halStatus);
15314 /* send the status to UMAC, don't return from here*/
15315 }
15316
15317 /*Notify UMAC*/
15318 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15319
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015321}/*WDI_ProcessSetSTABcastKeyRsp*/
15322
15323/**
15324 @brief Process Remove STA Bcast Key Rsp function (called when a
15325 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015326
15327 @param pWDICtx: pointer to the WLAN DAL context
15328 pEventData: pointer to the event information structure
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 @see
15331 @return Result of the function call
15332*/
15333WDI_Status
15334WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015335(
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 WDI_ControlBlockType* pWDICtx,
15337 WDI_EventInfoType* pEventData
15338)
15339{
15340 WDI_Status wdiStatus;
15341 eHalStatus halStatus;
15342 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15344
15345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 -------------------------------------------------------------------------*/
15348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15349 ( NULL == pEventData->pEventData))
15350 {
15351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 }
15356
15357 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15358
15359 /*-------------------------------------------------------------------------
15360 Extract response and send it to UMAC
15361 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wpalMemoryCopy( &halStatus,
15363 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 sizeof(halStatus));
15365
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015367
15368 if ( eHAL_STATUS_SUCCESS != halStatus )
15369 {
15370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15371 "Remove STA Key failed with status %s (%d)",
15372 WDI_getHALStatusMsgString(halStatus),
15373 halStatus);
15374 /* send the status to UMAC, don't return from here*/
15375 }
15376
15377 /*Notify UMAC*/
15378 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15379
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15382
15383
15384/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015386==========================================================================*/
15387
15388/**
15389 @brief Process Add TSpec Rsp function (called when a response
15390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015391
15392 @param pWDICtx: pointer to the WLAN DAL context
15393 pEventData: pointer to the event information structure
15394
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 @see
15396 @return Result of the function call
15397*/
15398WDI_Status
15399WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015400(
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 WDI_ControlBlockType* pWDICtx,
15402 WDI_EventInfoType* pEventData
15403)
15404{
15405 WDI_Status wdiStatus;
15406 eHalStatus halStatus;
15407 WDI_AddTsRspCb wdiAddTsRspCb;
15408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15409
15410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 -------------------------------------------------------------------------*/
15413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15414 ( NULL == pEventData->pEventData))
15415 {
15416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 }
15421
15422 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15423
15424 /*-------------------------------------------------------------------------
15425 Extract response and send it to UMAC
15426 -------------------------------------------------------------------------*/
15427 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015429
15430 /*Notify UMAC*/
15431 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15432
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015434}/*WDI_ProcessAddTSpecRsp*/
15435
15436
15437/**
15438 @brief Process Del TSpec Rsp function (called when a response
15439 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015440
15441 @param pWDICtx: pointer to the WLAN DAL context
15442 pEventData: pointer to the event information structure
15443
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 @see
15445 @return Result of the function call
15446*/
15447WDI_Status
15448WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015449(
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 WDI_ControlBlockType* pWDICtx,
15451 WDI_EventInfoType* pEventData
15452)
15453{
15454 WDI_Status wdiStatus;
15455 eHalStatus halStatus;
15456 WDI_DelTsRspCb wdiDelTsRspCb;
15457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15458
15459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 -------------------------------------------------------------------------*/
15462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15463 ( NULL == pEventData->pEventData))
15464 {
15465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 }
15470
15471 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15472
15473 /*-------------------------------------------------------------------------
15474 Extract response and send it to UMAC
15475 -------------------------------------------------------------------------*/
15476 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478
15479 /*Notify UMAC*/
15480 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15481
Jeff Johnsone7245742012-09-05 17:12:55 -070015482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015483}/*WDI_ProcessDelTSpecRsp*/
15484
15485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015488
15489 @param pWDICtx: pointer to the WLAN DAL context
15490 pEventData: pointer to the event information structure
15491
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 @see
15493 @return Result of the function call
15494*/
15495WDI_Status
15496WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015497(
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 WDI_ControlBlockType* pWDICtx,
15499 WDI_EventInfoType* pEventData
15500)
15501{
15502 WDI_Status wdiStatus;
15503 eHalStatus halStatus;
15504 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15506
15507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 -------------------------------------------------------------------------*/
15510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15511 ( NULL == pEventData->pEventData))
15512 {
15513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 }
15518
15519 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15520
15521 /*-------------------------------------------------------------------------
15522 Extract response and send it to UMAC
15523 -------------------------------------------------------------------------*/
15524 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015526
15527 /*Notify UMAC*/
15528 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15529
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015531}/*WDI_ProcessUpdateEDCAParamsRsp*/
15532
15533
15534/**
15535 @brief Process Add BA Rsp function (called when a response
15536 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015537
15538 @param pWDICtx: pointer to the WLAN DAL context
15539 pEventData: pointer to the event information structure
15540
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 @see
15542 @return Result of the function call
15543*/
15544WDI_Status
15545WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015546(
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 WDI_ControlBlockType* pWDICtx,
15548 WDI_EventInfoType* pEventData
15549)
15550{
15551 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15552
15553 tAddBASessionRspParams halBASessionRsp;
15554 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15555
Jeff Johnsone7245742012-09-05 17:12:55 -070015556
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15558
15559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 -------------------------------------------------------------------------*/
15562 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15563 ( NULL == pEventData->pEventData))
15564 {
15565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 }
15570
15571 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15572
15573 /*-------------------------------------------------------------------------
15574 Extract response and send it to UMAC
15575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 wpalMemoryCopy( &halBASessionRsp,
15577 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 sizeof(halBASessionRsp));
15579
15580 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15581
Jeff Johnson43971f52012-07-17 12:26:56 -070015582 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 {
15584 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15585 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15586 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15587 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15588 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15589 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15590 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15591 }
15592
15593 /*Notify UMAC*/
15594 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15595
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597}/*WDI_ProcessAddSessionBARsp*/
15598
15599
15600/**
15601 @brief Process Del BA Rsp function (called when a response
15602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015603
15604 @param pWDICtx: pointer to the WLAN DAL context
15605 pEventData: pointer to the event information structure
15606
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 @see
15608 @return Result of the function call
15609*/
15610WDI_Status
15611WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015612(
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 WDI_ControlBlockType* pWDICtx,
15614 WDI_EventInfoType* pEventData
15615)
15616{
15617 WDI_Status wdiStatus;
15618 eHalStatus halStatus;
15619 WDI_DelBARspCb wdiDelBARspCb;
15620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15621
15622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 -------------------------------------------------------------------------*/
15625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15626 ( NULL == pEventData->pEventData))
15627 {
15628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 }
15633
15634 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15635
15636 /*-------------------------------------------------------------------------
15637 Extract response and send it to UMAC
15638 -------------------------------------------------------------------------*/
15639 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015641
15642 if ( eHAL_STATUS_SUCCESS == halStatus )
15643 {
15644 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15645 }
15646
15647 /*Notify UMAC*/
15648 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15649
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015651}/*WDI_ProcessDelBARsp*/
15652
15653#ifdef FEATURE_WLAN_CCX
15654/**
15655 @brief Process TSM Stats Rsp function (called when a response
15656 is being received over the bus from HAL)
15657
15658 @param pWDICtx: pointer to the WLAN DAL context
15659 pEventData: pointer to the event information structure
15660
15661 @see
15662 @return Result of the function call
15663*/
15664WDI_Status
15665WDI_ProcessTsmStatsRsp
15666(
15667 WDI_ControlBlockType* pWDICtx,
15668 WDI_EventInfoType* pEventData
15669)
15670{
15671 WDI_TsmRspCb wdiTsmStatsRspCb;
15672 tTsmStatsRspMsg halTsmStatsRspMsg;
15673 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15675
15676 /*-------------------------------------------------------------------------
15677 Sanity check
15678 -------------------------------------------------------------------------*/
15679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15680 ( NULL == pEventData->pEventData))
15681 {
15682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 WDI_ASSERT(0);
15685 return WDI_STATUS_E_FAILURE;
15686 }
15687
15688 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15689
15690 /*-------------------------------------------------------------------------
15691 Unpack HAL Response Message - the header was already extracted by the
15692 main Response Handling procedure
15693 -------------------------------------------------------------------------*/
15694 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15695 pEventData->pEventData,
15696 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15697
15698 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15699 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15700 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15701 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15702 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15703 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15704 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15705 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15706 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15707 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15708 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15709 halTsmStatsRspMsg.tsmStatsRspParams.status);
15710
15711 /*Notify UMAC*/
15712 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15713
15714 return WDI_STATUS_SUCCESS;
15715}/*WDI_ProcessTsmStatsRsp*/
15716
15717#endif
15718
15719
15720
15721/**
15722 @brief Process Flush AC Rsp function (called when a response
15723 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015724
15725 @param pWDICtx: pointer to the WLAN DAL context
15726 pEventData: pointer to the event information structure
15727
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 @see
15729 @return Result of the function call
15730*/
15731WDI_Status
15732WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015733(
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 WDI_ControlBlockType* pWDICtx,
15735 WDI_EventInfoType* pEventData
15736)
15737{
15738 WDI_Status wdiStatus;
15739 eHalStatus halStatus;
15740 WDI_FlushAcRspCb wdiFlushAcRspCb;
15741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15742
15743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 -------------------------------------------------------------------------*/
15746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15747 ( NULL == pEventData->pEventData))
15748 {
15749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 }
15754
15755 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15756
15757 /*-------------------------------------------------------------------------
15758 Extract response and send it to UMAC
15759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 wpalMemoryCopy( &halStatus,
15761 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 sizeof(halStatus));
15763
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015765
15766 /*Notify UMAC*/
15767 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15768
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015770}/*WDI_ProcessFlushAcRsp*/
15771
15772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015775
15776 @param pWDICtx: pointer to the WLAN DAL context
15777 pEventData: pointer to the event information structure
15778
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 @see
15780 @return Result of the function call
15781*/
15782WDI_Status
15783WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015784(
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 WDI_ControlBlockType* pWDICtx,
15786 WDI_EventInfoType* pEventData
15787)
15788{
15789 WDI_Status wdiStatus;
15790 eHalStatus halStatus;
15791 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15793
15794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 -------------------------------------------------------------------------*/
15797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15798 ( NULL == pEventData->pEventData))
15799 {
15800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 }
15805
15806 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15807
15808 /*-------------------------------------------------------------------------
15809 Extract response and send it to UMAC
15810 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 wpalMemoryCopy( &halStatus,
15812 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 sizeof(halStatus));
15814
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015816
15817 /*Notify UMAC*/
15818 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821}/*WDI_ProcessBtAmpEventRsp*/
15822
15823
15824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015827
15828 @param pWDICtx: pointer to the WLAN DAL context
15829 pEventData: pointer to the event information structure
15830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 @see
15832 @return Result of the function call
15833*/
15834WDI_Status
15835WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015836(
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 WDI_ControlBlockType* pWDICtx,
15838 WDI_EventInfoType* pEventData
15839)
15840{
15841 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15842 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15843 tAddStaSelfRspMsg halAddStaSelfRsp;
15844 WDI_AddStaParams wdiAddSTAParam = {0};
15845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15846
15847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 -------------------------------------------------------------------------*/
15850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15851 ( NULL == pEventData->pEventData))
15852 {
15853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 }
15858
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15861
15862 /*-------------------------------------------------------------------------
15863 Extract response and send it to UMAC
15864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15866 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15868
15869
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 wdiAddSTASelfParams.wdiStatus =
15871 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015872
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15879
15880 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15881 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15882 WDI_MAC_ADDR_LEN);
15883
15884
15885#ifdef HAL_SELF_STA_PER_BSS
15886
15887 /* At this point add the self-STA */
15888
15889 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15890 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15891 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15892
15893 //all DPU indices are the same for self STA
15894
15895 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15898 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15899 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15900 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15901 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15902
15903 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15904 WDI_MAC_ADDR_LEN);
15905
15906 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15907 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15908
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15911 {
15912 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15913 }
15914#endif
15915
15916 /*Notify UMAC*/
15917 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15918
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920}/*WDI_ProcessAddSTASelfRsp*/
15921
15922
15923
15924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
15928 @param pWDICtx: pointer to the WLAN DAL context
15929 pEventData: pointer to the event information structure
15930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 @see
15932 @return Result of the function call
15933*/
15934WDI_Status
15935WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015936(
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 WDI_ControlBlockType* pWDICtx,
15938 WDI_EventInfoType* pEventData
15939)
15940{
15941 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15942 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15943 tDelStaSelfRspParams delStaSelfRspParams;
15944 wpt_uint8 ucStaIdx;
15945
15946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15947
15948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 -------------------------------------------------------------------------*/
15951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15952 ( NULL == pEventData->pEventData))
15953 {
15954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 }
15959
15960 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15961
15962 /*-------------------------------------------------------------------------
15963 Extract response and send it to UMAC
15964 -------------------------------------------------------------------------*/
15965
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 (wpt_uint8*)pEventData->pEventData,
15968 sizeof(tDelStaSelfRspParams));
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wdiDelStaSelfRspParams.wdiStatus =
15971 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015972
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15975 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15976 {
15977 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 delStaSelfRspParams.selfMacAddr,
15980 &ucStaIdx);
15981 if(WDI_STATUS_E_FAILURE == wdiStatus)
15982 {
15983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015984 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 }
15988 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15989 }
15990
15991 /*Notify UMAC*/
15992 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15993
15994 return WDI_STATUS_SUCCESS;
15995}
15996
Jeff Johnsone7245742012-09-05 17:12:55 -070015997#ifdef FEATURE_OEM_DATA_SUPPORT
15998/**
15999 @brief Start Oem Data Rsp function (called when a
16000 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 @param pWDICtx: pointer to the WLAN DAL context
16003 pEventData: pointer to the event information structure
16004
16005 @see
16006 @return Result of the function call
16007*/
16008#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16009
16010WDI_Status
16011WDI_ProcessStartOemDataRsp
16012(
16013 WDI_ControlBlockType* pWDICtx,
16014 WDI_EventInfoType* pEventData
16015)
16016{
16017 WDI_oemDataRspCb wdiOemDataRspCb;
16018 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16019 tStartOemDataRspParams* halStartOemDataRspParams;
16020
16021 /*-------------------------------------------------------------------------
16022 Sanity check
16023 -------------------------------------------------------------------------*/
16024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16025 ( NULL == pEventData->pEventData))
16026 {
16027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016028 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 WDI_ASSERT(0);
16030 return WDI_STATUS_E_FAILURE;
16031 }
16032
16033 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16034
16035 /*-------------------------------------------------------------------------
16036 Extract response and send it to UMAC
16037 -------------------------------------------------------------------------*/
16038 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16039
16040
16041 //It is the responsibility of the application code to check for failure
16042 //conditions!
16043
16044 //Allocate memory for WDI OEM DATA RSP structure
16045 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16046
16047 if(NULL == wdiOemDataRspParams)
16048 {
16049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16050 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16051 pWDICtx, pEventData, pEventData->pEventData);
16052 WDI_ASSERT(0);
16053 return WDI_STATUS_E_FAILURE;
16054 }
16055
16056 /* Populate WDI structure members */
16057 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16058
16059 /*Notify UMAC*/
16060 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16061
16062 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16063 wpalMemoryFree(wdiOemDataRspParams);
16064
16065 return WDI_STATUS_SUCCESS;
16066}/*WDI_PrcoessStartOemDataRsp*/
16067#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016068
16069/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016071===========================================================================*/
16072
16073/**
16074 @brief Process Channel Switch Rsp function (called when a response
16075 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016076
16077 @param pWDICtx: pointer to the WLAN DAL context
16078 pEventData: pointer to the event information structure
16079
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 @see
16081 @return Result of the function call
16082*/
16083WDI_Status
16084WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016085(
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 WDI_ControlBlockType* pWDICtx,
16087 WDI_EventInfoType* pEventData
16088)
16089{
16090 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16091 WDI_SwitchChRspCb wdiChSwitchRspCb;
16092 tSwitchChannelRspParams halSwitchChannelRsp;
16093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16094
16095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 -------------------------------------------------------------------------*/
16098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16099 ( NULL == pEventData->pEventData))
16100 {
16101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 }
16106
16107 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16108
16109 /*-------------------------------------------------------------------------
16110 Extract response and send it to UMAC
16111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 (wpt_uint8*)pEventData->pEventData,
16114 sizeof(halSwitchChannelRsp));
16115
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wdiSwitchChRsp.wdiStatus =
16117 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16119
16120#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016122#endif
16123
16124 /*Notify UMAC*/
16125 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16126
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128}/*WDI_ProcessChannelSwitchRsp*/
16129
16130
16131/**
16132 @brief Process Config STA Rsp function (called when a response
16133 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016134
16135 @param pWDICtx: pointer to the WLAN DAL context
16136 pEventData: pointer to the event information structure
16137
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 @see
16139 @return Result of the function call
16140*/
16141WDI_Status
16142WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016143(
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 WDI_ControlBlockType* pWDICtx,
16145 WDI_EventInfoType* pEventData
16146)
16147{
16148 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16149 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16150 WDI_AddStaParams wdiAddSTAParam;
16151
16152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16157
16158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 -------------------------------------------------------------------------*/
16161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16162 ( NULL == pEventData->pEventData))
16163 {
16164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 }
16169
16170 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16171
16172 /*-------------------------------------------------------------------------
16173 Extract response and send it to UMAC
16174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 sizeof(halConfigStaRsp.configStaRspParams));
16178
16179
16180 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16181 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16182 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16183 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16184 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16185
16186 /* MAC Address of STA - take from cache as it does not come back in the
16187 response*/
16188 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016191
16192 wdiCfgSTAParams.wdiStatus =
16193 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016194
16195 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16196 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16197 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16198
16199 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16200 {
16201 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16202 {
16203 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16206 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.ucHTCapable =
16212 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16213 wdiAddSTAParam.ucStaType =
16214 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16215
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16218 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016220
16221 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16222 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16223 WDI_MAC_ADDR_LEN);
16224
16225 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16226 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16227 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016228
16229 if ( NULL == pBSSSes )
16230 {
16231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16232 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016233
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 }
16237
16238 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 halConfigStaRsp.configStaRspParams.ucBcastSig;
16247 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16248 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016249
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16251 }
16252 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16253 {
16254 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16255
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016259 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 halConfigStaRsp.configStaRspParams.ucUcastSig;
16270 }
16271 }
16272
16273 /*Notify UMAC*/
16274 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16275
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016277}/*WDI_ProcessConfigStaRsp*/
16278
16279
16280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016283
16284 @param pWDICtx: pointer to the WLAN DAL context
16285 pEventData: pointer to the event information structure
16286
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 @see
16288 @return Result of the function call
16289*/
16290WDI_Status
16291WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016292(
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 WDI_ControlBlockType* pWDICtx,
16294 WDI_EventInfoType* pEventData
16295)
16296{
16297 WDI_Status wdiStatus;
16298 eHalStatus halStatus;
16299 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16300
16301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16304
16305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 -------------------------------------------------------------------------*/
16308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16309 ( NULL == pEventData->pEventData))
16310 {
16311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 }
16316
16317 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16318
16319 wpalMutexAcquire(&pWDICtx->wptMutex);
16320
16321 /*If the link is being transitioned to idle - the BSS is to be deleted
16322 - this type of ending a session is possible when UMAC has failed an
16323 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16326 {
16327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16331 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16332 &pBSSSes);
16333
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 /*-----------------------------------------------------------------------
16335 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 -----------------------------------------------------------------------*/
16338 if ( NULL == pBSSSes )
16339 {
16340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16341 "Set link response received outside association session");
16342 }
16343 else
16344 {
16345 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16346 will be del BSS coming after this to stop the beaconing & cleaning up the
16347 sessions*/
16348 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16349 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16350 {
16351 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 -----------------------------------------------------------------------*/
16354 WDI_DeleteSession(pWDICtx, pBSSSes);
16355
16356 /*-----------------------------------------------------------------------
16357 Check to see if this association is in progress - if so disable the
16358 flag as this has ended
16359 -----------------------------------------------------------------------*/
16360 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 /*Association no longer in progress */
16363 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16364 /*Association no longer in progress - prepare pending assoc for processing*/
16365 WDI_DequeueAssocRequest(pWDICtx);
16366 }
16367 }
16368 }
16369 }
16370 /* If the link state has been set to POST ASSOC, reset the "association in
16371 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16374 {
16375 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16376 WDI_DequeueAssocRequest(pWDICtx);
16377 }
16378
16379 wpalMutexRelease(&pWDICtx->wptMutex);
16380
16381 /*-------------------------------------------------------------------------
16382 Extract response and send it to UMAC
16383 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 wpalMemoryCopy( &halStatus,
16385 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 sizeof(halStatus));
16387
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016389
16390 /*Notify UMAC*/
16391 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16392
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394}/*WDI_ProcessSetLinkStateRsp*/
16395
16396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016399
16400 @param pWDICtx: pointer to the WLAN DAL context
16401 pEventData: pointer to the event information structure
16402
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 @see
16404 @return Result of the function call
16405*/
16406WDI_Status
16407WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016408(
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ControlBlockType* pWDICtx,
16410 WDI_EventInfoType* pEventData
16411)
16412{
16413 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16414 WDI_GetStatsRspCb wdiGetStatsRspCb;
16415 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016416
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16418
16419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 -------------------------------------------------------------------------*/
16422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16423 ( NULL == pEventData->pEventData))
16424 {
16425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430
16431 /*-------------------------------------------------------------------------
16432 Extract response and send it to UMAC
16433 -------------------------------------------------------------------------*/
16434 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16435
16436 /*allocate the stats response buffer */
16437 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16438 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16439 + sizeof(WDI_GetStatsRspParamsType));
16440
16441 if(NULL == wdiGetStatsRsp)
16442 {
16443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16444 "Failed to allocate memory in Get Stats Response %x %x %x ",
16445 pWDICtx, pEventData, pEventData->pEventData);
16446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 }
16449
16450 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16451
16452 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16453 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16454 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16455 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16456 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16457 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16458
16459 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16460 wpalMemoryCopy(wdiGetStatsRsp + 1,
16461 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16462 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16463
16464 /*Notify UMAC*/
16465 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16466
16467 wpalMemoryFree(wdiGetStatsRsp);
16468
Jeff Johnsone7245742012-09-05 17:12:55 -070016469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016470}/*WDI_ProcessGetStatsRsp*/
16471
16472
16473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016476
16477 @param pWDICtx: pointer to the WLAN DAL context
16478 pEventData: pointer to the event information structure
16479
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 @see
16481 @return Result of the function call
16482*/
16483WDI_Status
16484WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016485(
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 WDI_ControlBlockType* pWDICtx,
16487 WDI_EventInfoType* pEventData
16488)
16489{
16490 WDI_Status wdiStatus;
16491 eHalStatus halStatus;
16492 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16494
16495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 -------------------------------------------------------------------------*/
16498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16499 ( NULL == pEventData->pEventData))
16500 {
16501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 }
16506
16507 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16508
16509 /*-------------------------------------------------------------------------
16510 Extract response and send it to UMAC
16511 -------------------------------------------------------------------------*/
16512 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016514
16515 /*Notify UMAC*/
16516 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16517
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519}/*WDI_ProcessUpdateCfgRsp*/
16520
16521
16522
16523/**
16524 @brief Process Add BA Rsp function (called when a response
16525 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016526
16527 @param pWDICtx: pointer to the WLAN DAL context
16528 pEventData: pointer to the event information structure
16529
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 @see
16531 @return Result of the function call
16532*/
16533WDI_Status
16534WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016535(
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 WDI_ControlBlockType* pWDICtx,
16537 WDI_EventInfoType* pEventData
16538)
16539{
16540 WDI_AddBARspCb wdiAddBARspCb;
16541
16542 tAddBARspParams halAddBARsp;
16543 WDI_AddBARspinfoType wdiAddBARsp;
16544
16545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16546
16547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 -------------------------------------------------------------------------*/
16550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16551 ( NULL == pEventData->pEventData))
16552 {
16553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 }
16558
16559 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16560
16561 /*-------------------------------------------------------------------------
16562 Extract response and send it to UMAC
16563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 wpalMemoryCopy( &halAddBARsp,
16565 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 sizeof(halAddBARsp));
16567
16568 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16569
Jeff Johnson43971f52012-07-17 12:26:56 -070016570 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 {
16572 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16573 }
16574
16575 /*Notify UMAC*/
16576 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16577
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579}/*WDI_ProcessAddSessionBARsp*/
16580
16581/**
16582 @brief Process Add BA Rsp function (called when a response
16583 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016584
16585 @param pWDICtx: pointer to the WLAN DAL context
16586 pEventData: pointer to the event information structure
16587
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 @see
16589 @return Result of the function call
16590*/
16591WDI_Status
16592WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016593(
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 WDI_ControlBlockType* pWDICtx,
16595 WDI_EventInfoType* pEventData
16596)
16597{
16598 WDI_TriggerBARspCb wdiTriggerBARspCb;
16599
16600 tTriggerBARspParams* halTriggerBARsp;
16601 tTriggerBaRspCandidate* halBaCandidate;
16602 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16603 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16604 wpt_uint16 index;
16605 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
16626 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16629 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 sizeof(WDI_TriggerBARspCandidateType));
16631 if(NULL == wdiTriggerBARsp)
16632 {
16633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16634 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16635 pWDICtx, pEventData, pEventData->pEventData);
16636 wpalMemoryFree(halTriggerBARsp);
16637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 }
16640
16641 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16642
16643 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16644 {
16645 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16648
16649 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16650 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16651
16652 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16653 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16656 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16662 }
16663 wdiTriggerBARspCandidate++;
16664 halBaCandidate++;
16665 }
16666 }
16667
16668 /*Notify UMAC*/
16669 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16670
16671 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016673}/*WDI_ProcessAddSessionBARsp*/
16674
16675/**
16676 @brief Process Update Beacon Params Rsp function (called when a response
16677 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016678
16679 @param pWDICtx: pointer to the WLAN DAL context
16680 pEventData: pointer to the event information structure
16681
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 @see
16683 @return Result of the function call
16684*/
16685WDI_Status
16686WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016687(
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 WDI_ControlBlockType* pWDICtx,
16689 WDI_EventInfoType* pEventData
16690)
16691{
16692 WDI_Status wdiStatus;
16693 eHalStatus halStatus;
16694 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16696
16697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 -------------------------------------------------------------------------*/
16700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16701 ( NULL == pEventData->pEventData))
16702 {
16703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 }
16708
16709 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16710
16711 /*-------------------------------------------------------------------------
16712 Extract response and send it to UMAC
16713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wpalMemoryCopy( &halStatus,
16715 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 sizeof(halStatus));
16717
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016719
16720 /*Notify UMAC*/
16721 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16722
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724}/*WDI_ProcessUpdateBeaconParamsRsp*/
16725
16726/**
16727 @brief Process Send Beacon template Rsp function (called when a response
16728 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
16730 @param pWDICtx: pointer to the WLAN DAL context
16731 pEventData: pointer to the event information structure
16732
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 @see
16734 @return Result of the function call
16735*/
16736WDI_Status
16737WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016738(
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 WDI_ControlBlockType* pWDICtx,
16740 WDI_EventInfoType* pEventData
16741)
16742{
16743 WDI_Status wdiStatus;
16744 eHalStatus halStatus;
16745 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16747
16748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 -------------------------------------------------------------------------*/
16751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16752 ( NULL == pEventData->pEventData))
16753 {
16754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 }
16759
16760 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16761
16762 /*-------------------------------------------------------------------------
16763 Extract response and send it to UMAC
16764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 wpalMemoryCopy( &halStatus,
16766 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 sizeof(halStatus));
16768
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016770
16771 /*Notify UMAC*/
16772 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16773
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775}/*WDI_ProcessSendBeaconParamsRsp*/
16776
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016781
16782 @param pWDICtx: pointer to the WLAN DAL context
16783 pEventData: pointer to the event information structure
16784
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 @see
16786 @return Result of the function call
16787*/
16788WDI_Status
16789WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016790(
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ControlBlockType* pWDICtx,
16792 WDI_EventInfoType* pEventData
16793)
16794{
16795 WDI_Status wdiStatus;
16796 eHalStatus halStatus;
16797 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16799
16800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 -------------------------------------------------------------------------*/
16803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16804 ( NULL == pEventData->pEventData))
16805 {
16806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 }
16811
16812 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16813
16814 /*-------------------------------------------------------------------------
16815 Extract response and send it to UMAC
16816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 wpalMemoryCopy( &halStatus,
16818 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 sizeof(halStatus));
16820
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016822
16823 /*Notify UMAC*/
16824 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16825
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016827}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16828
16829 /**
16830 @brief Process Set Max Tx Power Rsp function (called when a response
16831 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016832
16833 @param pWDICtx: pointer to the WLAN DAL context
16834 pEventData: pointer to the event information structure
16835
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 @see
16837 @return Result of the function call
16838*/
16839WDI_Status
16840WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016841(
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 WDI_ControlBlockType* pWDICtx,
16843 WDI_EventInfoType* pEventData
16844)
16845{
16846 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016847
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016849
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16852
16853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 -------------------------------------------------------------------------*/
16856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16857 ( NULL == pEventData->pEventData))
16858 {
16859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 }
16864
16865 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16866
16867 /*-------------------------------------------------------------------------
16868 Extract response and send it to UMAC
16869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16871 pEventData->pEventData,
16872 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016873
16874 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16875 {
16876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16877 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 }
16881
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016885
16886 /*Notify UMAC*/
16887 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890}
16891
16892#ifdef WLAN_FEATURE_P2P
16893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016896
16897 @param pWDICtx: pointer to the WLAN DAL context
16898 pEventData: pointer to the event information structure
16899
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 @see
16901 @return Result of the function call
16902*/
16903WDI_Status
16904WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016905(
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 WDI_ControlBlockType* pWDICtx,
16907 WDI_EventInfoType* pEventData
16908)
16909{
16910 WDI_Status wdiStatus;
16911 eHalStatus halStatus;
16912 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16914
16915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 -------------------------------------------------------------------------*/
16918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16919 ( NULL == pEventData->pEventData))
16920 {
16921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 }
16926
16927 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16928
16929 /*-------------------------------------------------------------------------
16930 Extract response and send it to UMAC
16931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 wpalMemoryCopy( &halStatus,
16933 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 sizeof(halStatus));
16935
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016937
16938 /*Notify UMAC*/
16939 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16940
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016942}/*WDI_ProcessP2PGONOARsp*/
16943#endif
16944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016947
16948 @param pWDICtx: pointer to the WLAN DAL context
16949 pEventData: pointer to the event information structure
16950
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 @see
16952 @return Result of the function call
16953*/
16954WDI_Status
16955WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016956(
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 WDI_ControlBlockType* pWDICtx,
16958 WDI_EventInfoType* pEventData
16959)
16960{
16961 WDI_Status wdiStatus;
16962 eHalStatus halStatus;
16963 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080016964 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16966
16967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 -------------------------------------------------------------------------*/
16970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16971 ( NULL == pEventData->pEventData))
16972 {
16973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 }
16978
16979 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16980
16981 /*-------------------------------------------------------------------------
16982 Extract response and send it to UMAC
16983 -------------------------------------------------------------------------*/
16984 halStatus = *((eHalStatus*)pEventData->pEventData);
16985
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016987
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016988 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16989 * Other module states are taken care by PMC.
16990 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16991 */
16992 if (wdiStatus != WDI_STATUS_SUCCESS) {
16993
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16995 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16996 halStatus);
16997 /* Call Back is not required as we are putting the DXE in FULL
16998 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080016999 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17000
17001 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17003 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17004 WDI_ASSERT(0);
17005 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 /*Notify UMAC*/
17008 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17009
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011}/*WDI_ProcessEnterImpsRsp*/
17012
17013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017016
17017 @param pWDICtx: pointer to the WLAN DAL context
17018 pEventData: pointer to the event information structure
17019
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 @see
17021 @return Result of the function call
17022*/
17023WDI_Status
17024WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017025(
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ControlBlockType* pWDICtx,
17027 WDI_EventInfoType* pEventData
17028)
17029{
17030 WDI_Status wdiStatus;
17031 eHalStatus halStatus;
17032 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080017033 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17035
17036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 -------------------------------------------------------------------------*/
17039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17040 ( NULL == pEventData->pEventData))
17041 {
17042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 }
17047
17048 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17049
17050 /*-------------------------------------------------------------------------
17051 Extract response and send it to UMAC
17052 -------------------------------------------------------------------------*/
17053 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017055
17056 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080017057 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17058 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17059 {
17060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17061 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17062 WDI_ASSERT(0);
17063 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 /*Notify UMAC*/
17065 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17066
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017068}/*WDI_ProcessExitImpsRsp*/
17069
17070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017073
17074 @param pWDICtx: pointer to the WLAN DAL context
17075 pEventData: pointer to the event information structure
17076
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 @see
17078 @return Result of the function call
17079*/
17080WDI_Status
17081WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017082(
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 WDI_ControlBlockType* pWDICtx,
17084 WDI_EventInfoType* pEventData
17085)
17086{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017087 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17088 tHalEnterBmpsRspParams halEnterBmpsRsp;
17089 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17090 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080017091 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17093
17094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 -------------------------------------------------------------------------*/
17097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17098 ( NULL == pEventData->pEventData))
17099 {
17100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 }
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
17109 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17110 {
17111 wpalMemoryCopy( &halEnterBmpsRsp,
17112 pEventData->pEventData,
17113 sizeof(halEnterBmpsRsp));
17114
17115 //Used to print debug message
17116 halStatus = halEnterBmpsRsp.status;
17117 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17118 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17119 }
17120 else
17121 {
17122 halStatus = *((eHalStatus*)pEventData->pEventData);
17123 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17124 }
17125
17126 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017127
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017128 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17129 * Other module states are taken care by PMC.
17130 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17131 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017132 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17133 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017136 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17137 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017138 /* Call Back is not required as we are putting the DXE in FULL
17139 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080017140 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17141 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17142 {
17143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17144 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17145 WDI_ASSERT(0);
17146 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017147 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017148 }
17149
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017151 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017152
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017154}/*WDI_ProcessEnterBmpsRsp*/
17155
17156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017159
17160 @param pWDICtx: pointer to the WLAN DAL context
17161 pEventData: pointer to the event information structure
17162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 @see
17164 @return Result of the function call
17165*/
17166WDI_Status
17167WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017168(
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 WDI_ControlBlockType* pWDICtx,
17170 WDI_EventInfoType* pEventData
17171)
17172{
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 eHalStatus halStatus;
17174 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017175 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080017176 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17177 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17179
17180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 -------------------------------------------------------------------------*/
17183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17184 ( NULL == pEventData->pEventData))
17185 {
17186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 }
17191
17192 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17193
17194 /*-------------------------------------------------------------------------
17195 Extract response and send it to UMAC
17196 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017197
17198 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17199 {
17200 wpalMemoryCopy( &halExitBmpsRsp,
17201 pEventData->pEventData,
17202 sizeof(halExitBmpsRsp));
17203
17204 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17205 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17206 }
17207 else
17208 {
17209 halStatus = *((eHalStatus*)pEventData->pEventData);
17210 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17211 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017212
17213 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080017214 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17215 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17216 {
17217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17218 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17219 WDI_ASSERT(0);
17220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17222
17223 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017224 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017225
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017227}/*WDI_ProcessExitBmpsRsp*/
17228
17229/**
17230 @brief Process Enter UAPSD Rsp function (called when a response
17231 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017232
17233 @param pWDICtx: pointer to the WLAN DAL context
17234 pEventData: pointer to the event information structure
17235
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 @see
17237 @return Result of the function call
17238*/
17239WDI_Status
17240WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017241(
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ControlBlockType* pWDICtx,
17243 WDI_EventInfoType* pEventData
17244)
17245{
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017247 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017249 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17250
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17252
17253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 -------------------------------------------------------------------------*/
17256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17257 ( NULL == pEventData->pEventData))
17258 {
17259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 }
17264
17265 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17266
17267 /*-------------------------------------------------------------------------
17268 Extract response and send it to UMAC
17269 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017270 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17271 {
17272 wpalMemoryCopy( &halEnterUapsdRsp,
17273 pEventData->pEventData,
17274 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017275
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017276 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17277 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17278 }
17279 else
17280 {
17281 halStatus = *((eHalStatus*)pEventData->pEventData);
17282 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17283 }
17284
17285 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 {
17287 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17288 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17289 // the traffic to decide when to suspend the trigger frames when there is no traffic
17290 // activity on the trigger enabled ACs
17291 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17292
17293#ifdef WLAN_PERF
17294 // Increment the BD signature to refresh the fast path BD utilization
17295 pWDICtx->uBdSigSerialNum++;
17296#endif
17297 }
17298
17299 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017300 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017301
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017303}/*WDI_ProcessEnterUapsdRsp*/
17304
17305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017308
17309 @param pWDICtx: pointer to the WLAN DAL context
17310 pEventData: pointer to the event information structure
17311
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 @see
17313 @return Result of the function call
17314*/
17315WDI_Status
17316WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017317(
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 WDI_ControlBlockType* pWDICtx,
17319 WDI_EventInfoType* pEventData
17320)
17321{
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 eHalStatus halStatus;
17323 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017324 tHalExitUapsdRspParams halExitUapsdRsp;
17325 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17327
17328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 -------------------------------------------------------------------------*/
17331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17332 ( NULL == pEventData->pEventData))
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 }
17339
17340 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17341
17342 /*-------------------------------------------------------------------------
17343 Extract response and send it to UMAC
17344 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017345 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17346 {
17347 wpalMemoryCopy( &halExitUapsdRsp,
17348 pEventData->pEventData,
17349 sizeof(halExitUapsdRsp));
17350
17351 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17352 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17353 }
17354 else
17355 {
17356 halStatus = *((eHalStatus*)pEventData->pEventData);
17357 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17360 // directly instead of the FW WQ.
17361 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17362
17363#ifdef WLAN_PERF
17364 // Increment the BD signature to refresh the fast path BD utilization
17365 pWDICtx->uBdSigSerialNum++;
17366#endif
17367
17368 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017369 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017370
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017372}/*WDI_ProcessExitUapsdRsp*/
17373
17374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017377
17378 @param pWDICtx: pointer to the WLAN DAL context
17379 pEventData: pointer to the event information structure
17380
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 @see
17382 @return Result of the function call
17383*/
17384WDI_Status
17385WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017386(
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_ControlBlockType* pWDICtx,
17388 WDI_EventInfoType* pEventData
17389)
17390{
17391 WDI_Status wdiStatus;
17392 eHalStatus halStatus;
17393 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17395
17396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 -------------------------------------------------------------------------*/
17399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17400 ( NULL == pEventData->pEventData))
17401 {
17402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 }
17407
17408 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17409
17410 /*-------------------------------------------------------------------------
17411 Extract response and send it to UMAC
17412 -------------------------------------------------------------------------*/
17413 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017414 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017415
17416 /*Notify UMAC*/
17417 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17418
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017420}/*WDI_ProcessSetUapsdAcParamsRsp*/
17421
17422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017425
17426 @param pWDICtx: pointer to the WLAN DAL context
17427 pEventData: pointer to the event information structure
17428
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 @see
17430 @return Result of the function call
17431*/
17432WDI_Status
17433WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017434(
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ControlBlockType* pWDICtx,
17436 WDI_EventInfoType* pEventData
17437)
17438{
17439 WDI_Status wdiStatus;
17440 eHalStatus halStatus;
17441 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17443
17444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 -------------------------------------------------------------------------*/
17447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17448 ( NULL == pEventData->pEventData))
17449 {
17450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 }
17455
17456 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17457
17458 /*-------------------------------------------------------------------------
17459 Extract response and send it to UMAC
17460 -------------------------------------------------------------------------*/
17461 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017463
17464 /*Notify UMAC*/
17465 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17466
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017468}/*WDI_ProcessUpdateUapsdParamsRsp*/
17469
17470/**
17471 @brief Process Configure RXP filter Rsp function (called when a
17472 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017473
17474 @param pWDICtx: pointer to the WLAN DAL context
17475 pEventData: pointer to the event information structure
17476
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 @see
17478 @return Result of the function call
17479*/
17480WDI_Status
17481WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017482(
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 WDI_ControlBlockType* pWDICtx,
17484 WDI_EventInfoType* pEventData
17485)
17486{
17487 WDI_Status wdiStatus;
17488 eHalStatus halStatus;
17489 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17491
17492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 -------------------------------------------------------------------------*/
17495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17496 ( NULL == pEventData->pEventData))
17497 {
17498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 }
17503
17504 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17505
17506 /*-------------------------------------------------------------------------
17507 Extract response and send it to UMAC
17508 -------------------------------------------------------------------------*/
17509 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 /*Notify UMAC*/
17513 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17514
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516}/*WDI_ProcessConfigureRxpFilterRsp*/
17517
17518/**
17519 @brief Process Set beacon filter Rsp function (called when a
17520 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017521
17522 @param pWDICtx: pointer to the WLAN DAL context
17523 pEventData: pointer to the event information structure
17524
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 @see
17526 @return Result of the function call
17527*/
17528WDI_Status
17529WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017530(
Jeff Johnson295189b2012-06-20 16:38:30 -070017531 WDI_ControlBlockType* pWDICtx,
17532 WDI_EventInfoType* pEventData
17533)
17534{
17535 WDI_Status wdiStatus;
17536 eHalStatus halStatus;
17537 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17539
17540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 -------------------------------------------------------------------------*/
17543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17544 ( NULL == pEventData->pEventData))
17545 {
17546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 }
17551
17552 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17553
17554 /*-------------------------------------------------------------------------
17555 Extract response and send it to UMAC
17556 -------------------------------------------------------------------------*/
17557 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017559
17560 /*Notify UMAC*/
17561 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17562
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017564}/*WDI_ProcessSetBeaconFilterRsp*/
17565
17566/**
17567 @brief Process remove beacon filter Rsp function (called when a
17568 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017569
17570 @param pWDICtx: pointer to the WLAN DAL context
17571 pEventData: pointer to the event information structure
17572
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 @see
17574 @return Result of the function call
17575*/
17576WDI_Status
17577WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017578(
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 WDI_ControlBlockType* pWDICtx,
17580 WDI_EventInfoType* pEventData
17581)
17582{
17583 WDI_Status wdiStatus;
17584 eHalStatus halStatus;
17585 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17587
17588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 -------------------------------------------------------------------------*/
17591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17592 ( NULL == pEventData->pEventData))
17593 {
17594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 }
17599
17600 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17601
17602 /*-------------------------------------------------------------------------
17603 Extract response and send it to UMAC
17604 -------------------------------------------------------------------------*/
17605 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017607
17608 /*Notify UMAC*/
17609 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17610
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017612}/*WDI_ProcessRemBeaconFilterRsp*/
17613
17614/**
17615 @brief Process set RSSI thresholds Rsp function (called when a
17616 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017617
17618 @param pWDICtx: pointer to the WLAN DAL context
17619 pEventData: pointer to the event information structure
17620
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 @see
17622 @return Result of the function call
17623*/
17624WDI_Status
17625WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017626(
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 WDI_ControlBlockType* pWDICtx,
17628 WDI_EventInfoType* pEventData
17629)
17630{
17631 WDI_Status wdiStatus;
17632 eHalStatus halStatus;
17633 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17635
17636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 -------------------------------------------------------------------------*/
17639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17640 ( NULL == pEventData->pEventData))
17641 {
17642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017646 }
17647
17648 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17649
17650 /*-------------------------------------------------------------------------
17651 Extract response and send it to UMAC
17652 -------------------------------------------------------------------------*/
17653 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017655
17656 /*Notify UMAC*/
17657 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17658
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017660}/*WDI_ProcessSetRSSIThresoldsRsp*/
17661
17662/**
17663 @brief Process host offload Rsp function (called when a
17664 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017665
17666 @param pWDICtx: pointer to the WLAN DAL context
17667 pEventData: pointer to the event information structure
17668
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 @see
17670 @return Result of the function call
17671*/
17672WDI_Status
17673WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017674(
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 WDI_ControlBlockType* pWDICtx,
17676 WDI_EventInfoType* pEventData
17677)
17678{
17679 WDI_Status wdiStatus;
17680 eHalStatus halStatus;
17681 WDI_HostOffloadCb wdiHostOffloadCb;
17682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17683
17684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 -------------------------------------------------------------------------*/
17687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17688 ( NULL == pEventData->pEventData))
17689 {
17690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 }
17695
17696 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17697
17698 /*-------------------------------------------------------------------------
17699 Extract response and send it to UMAC
17700 -------------------------------------------------------------------------*/
17701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703
17704 /*Notify UMAC*/
17705 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17706
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017708}/*WDI_ProcessHostOffloadRsp*/
17709
17710/**
17711 @brief Process keep alive Rsp function (called when a
17712 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017713
17714 @param pWDICtx: pointer to the WLAN DAL context
17715 pEventData: pointer to the event information structure
17716
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 @see
17718 @return Result of the function call
17719*/
17720WDI_Status
17721WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017722(
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 WDI_ControlBlockType* pWDICtx,
17724 WDI_EventInfoType* pEventData
17725)
17726{
17727 WDI_Status wdiStatus;
17728 eHalStatus halStatus;
17729 WDI_KeepAliveCb wdiKeepAliveCb;
17730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17732 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17733
17734
17735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 -------------------------------------------------------------------------*/
17738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17739 ( NULL == pEventData->pEventData))
17740 {
17741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017745 }
17746
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17748
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 /*-------------------------------------------------------------------------
17750 Extract response and send it to UMAC
17751 -------------------------------------------------------------------------*/
17752 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017753 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754
17755 /*Notify UMAC*/
17756 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17757
Jeff Johnsone7245742012-09-05 17:12:55 -070017758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017759}/*WDI_ProcessKeepAliveRsp*/
17760
17761/**
17762 @brief Process wowl add ptrn Rsp function (called when a
17763 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017764
17765 @param pWDICtx: pointer to the WLAN DAL context
17766 pEventData: pointer to the event information structure
17767
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 @see
17769 @return Result of the function call
17770*/
17771WDI_Status
17772WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017773(
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 WDI_ControlBlockType* pWDICtx,
17775 WDI_EventInfoType* pEventData
17776)
17777{
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 eHalStatus halStatus;
17779 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017780 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17781 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17782
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17784
17785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 -------------------------------------------------------------------------*/
17788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17789 ( NULL == pEventData->pEventData))
17790 {
17791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 }
17796
17797 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17798
17799 /*-------------------------------------------------------------------------
17800 Extract response and send it to UMAC
17801 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017802 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17803 {
17804 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17805 pEventData->pEventData,
17806 sizeof(halAddWowlBcastPtrRsp));
17807
17808 wdiWowlAddBcPtrRsp.wdiStatus =
17809 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17810 }
17811 else
17812 {
17813 halStatus = *((eHalStatus*)pEventData->pEventData);
17814 wdiWowlAddBcPtrRsp.wdiStatus =
17815 WDI_HAL_2_WDI_STATUS(halStatus);
17816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017817
17818 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017819 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017820
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017822}/*WDI_ProcessWowlAddBcPtrnRsp*/
17823
17824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017827
17828 @param pWDICtx: pointer to the WLAN DAL context
17829 pEventData: pointer to the event information structure
17830
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 @see
17832 @return Result of the function call
17833*/
17834WDI_Status
17835WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017836(
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 WDI_ControlBlockType* pWDICtx,
17838 WDI_EventInfoType* pEventData
17839)
17840{
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 eHalStatus halStatus;
17842 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017843 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17844 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17846
17847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 -------------------------------------------------------------------------*/
17850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17851 ( NULL == pEventData->pEventData))
17852 {
17853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 }
17858
17859 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17860
17861 /*-------------------------------------------------------------------------
17862 Extract response and send it to UMAC
17863 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017864 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17865 {
17866 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17867 pEventData->pEventData,
17868 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017869
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017870 wdiWowlDelBcstPtrRsp.wdiStatus =
17871 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17872 }
17873 else
17874 {
17875 halStatus = *((eHalStatus*)pEventData->pEventData);
17876 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17877 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017879 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017880
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017882}/*WDI_ProcessWowlDelBcPtrnRsp*/
17883
17884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017887
17888 @param pWDICtx: pointer to the WLAN DAL context
17889 pEventData: pointer to the event information structure
17890
Jeff Johnson295189b2012-06-20 16:38:30 -070017891 @see
17892 @return Result of the function call
17893*/
17894WDI_Status
17895WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017896(
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 WDI_ControlBlockType* pWDICtx,
17898 WDI_EventInfoType* pEventData
17899)
17900{
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 eHalStatus halStatus;
17902 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017903 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17904 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17906
17907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 -------------------------------------------------------------------------*/
17910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17911 ( NULL == pEventData->pEventData))
17912 {
17913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 }
17918
17919 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17920
17921 /*-------------------------------------------------------------------------
17922 Extract response and send it to UMAC
17923 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017924 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17925 {
17926 wpalMemoryCopy( &halEnterWowlRspParams,
17927 (wpt_uint8*)pEventData->pEventData,
17928 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017929
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017930 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17931 wdiwowlEnterRsp.status =
17932 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17933 }
17934 else
17935 {
17936 halStatus = *((eHalStatus*)pEventData->pEventData);
17937 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17938 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017940 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017941
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017943}/*WDI_ProcessWowlEnterRsp*/
17944
17945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017948
17949 @param pWDICtx: pointer to the WLAN DAL context
17950 pEventData: pointer to the event information structure
17951
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 @see
17953 @return Result of the function call
17954*/
17955WDI_Status
17956WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017957(
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 WDI_ControlBlockType* pWDICtx,
17959 WDI_EventInfoType* pEventData
17960)
17961{
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 eHalStatus halStatus;
17963 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017964 tHalExitWowlRspParams halExitWowlRspParams;
17965 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17966
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968
17969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 -------------------------------------------------------------------------*/
17972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17973 ( NULL == pEventData->pEventData))
17974 {
17975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017979 }
17980
17981 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17982
17983 /*-------------------------------------------------------------------------
17984 Extract response and send it to UMAC
17985 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017986 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17987 {
17988 wpalMemoryCopy( &halExitWowlRspParams,
17989 pEventData->pEventData,
17990 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017992 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17993 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17994
17995 }
17996 else
17997 {
17998 halStatus = *((eHalStatus*)pEventData->pEventData);
17999 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018002 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018003
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018005}/*WDI_ProcessWowlExitRsp*/
18006
18007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018009 (called when a response is being received over the bus
18010 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018011
18012 @param pWDICtx: pointer to the WLAN DAL context
18013 pEventData: pointer to the event information structure
18014
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 @see
18016 @return Result of the function call
18017*/
18018WDI_Status
18019WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018020(
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 WDI_ControlBlockType* pWDICtx,
18022 WDI_EventInfoType* pEventData
18023)
18024{
18025 WDI_Status wdiStatus;
18026 eHalStatus halStatus;
18027 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18029
18030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 -------------------------------------------------------------------------*/
18033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18034 ( NULL == pEventData->pEventData))
18035 {
18036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 }
18041
18042 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18043
18044 /*-------------------------------------------------------------------------
18045 Extract response and send it to UMAC
18046 -------------------------------------------------------------------------*/
18047 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018048 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018049
18050 /*Notify UMAC*/
18051 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18052
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018054}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18055
18056
18057/**
18058 @brief Process Nv download(called when a response
18059 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018060
18061 @param pWDICtx: pointer to the WLAN DAL context
18062 pEventData: pointer to the event information structure
18063
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 @see
18065 @return Result of the function call
18066*/
18067WDI_Status
18068WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018069(
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ControlBlockType* pWDICtx,
18071 WDI_EventInfoType* pEventData
18072)
18073{
18074
18075 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18076 tHalNvImgDownloadRspParams halNvDownloadRsp;
18077 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18078
18079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 -------------------------------------------------------------------------*/
18082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18083 ( NULL == pEventData->pEventData))
18084 {
18085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 }
18090
18091 /*-------------------------------------------------------------------------
18092 Extract response and send it to UMAC
18093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 wpalMemoryCopy( &halNvDownloadRsp,
18095 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 sizeof(halNvDownloadRsp));
18097
18098 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18099
18100 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18102 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 {
18104 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 }
18107 else
18108 {
18109 /*Reset the Nv related global information in WDI context information */
18110 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18111 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18112 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18113 /*call WDA callback function for last fragment */
18114 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18115 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18116 }
18117
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018119}
18120#ifdef WLAN_FEATURE_VOWIFI_11R
18121/**
18122 @brief Process Add TSpec Rsp function (called when a response
18123 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018124
18125 @param pWDICtx: pointer to the WLAN DAL context
18126 pEventData: pointer to the event information structure
18127
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 @see
18129 @return Result of the function call
18130*/
18131WDI_Status
18132WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018133(
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 WDI_ControlBlockType* pWDICtx,
18135 WDI_EventInfoType* pEventData
18136)
18137{
18138 WDI_Status wdiStatus;
18139 tAggrAddTsRspParams aggrAddTsRsp;
18140 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18142
18143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 -------------------------------------------------------------------------*/
18146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18147 ( NULL == pEventData->pEventData))
18148 {
18149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 }
18154
18155 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18156
18157 /*-------------------------------------------------------------------------
18158 Extract response and send it to UMAC
18159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 wpalMemoryCopy( &aggrAddTsRsp,
18161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 sizeof(aggrAddTsRsp));
18163
18164 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166
18167 /*Notify UMAC*/
18168 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18169
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018171}/*WDI_ProcessAddTSpecRsp*/
18172#endif /* WLAN_FEATURE_VOWIFI_11R */
18173
18174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018177
18178 @param pWDICtx: pointer to the WLAN DAL context
18179 pEventData: pointer to the event information structure
18180
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 @see
18182 @return Result of the function call
18183*/
18184WDI_Status
18185WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018186(
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 WDI_ControlBlockType* pWDICtx,
18188 WDI_EventInfoType* pEventData
18189)
18190{
18191 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18192 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18193 tHalHostResumeRspParams hostResumeRspMsg;
18194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18195
18196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 -------------------------------------------------------------------------*/
18199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18200 ( NULL == pEventData->pEventData))
18201 {
18202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 }
18207
18208 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18209
18210 /*-------------------------------------------------------------------------
18211 Extract response and send it to UMAC
18212 -------------------------------------------------------------------------*/
18213
Jeff Johnsone7245742012-09-05 17:12:55 -070018214 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 (wpt_uint8*)pEventData->pEventData,
18216 sizeof(hostResumeRspMsg));
18217
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 wdiResumeRspParams.wdiStatus =
18219 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018220
18221 /*Notify UMAC*/
18222 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18223
18224 return WDI_STATUS_SUCCESS;
18225}
18226
18227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018230
18231 @param pWDICtx: pointer to the WLAN DAL context
18232 pEventData: pointer to the event information structure
18233
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 @see
18235 @return Result of the function call
18236*/
18237WDI_Status
18238WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018239(
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 WDI_ControlBlockType* pWDICtx,
18241 WDI_EventInfoType* pEventData
18242)
18243{
18244 WDI_Status wdiStatus;
18245 eHalStatus halStatus;
18246 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18248
18249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 -------------------------------------------------------------------------*/
18252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18253 ( NULL == pEventData->pEventData))
18254 {
18255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018260
18261 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018262
18263 /*-------------------------------------------------------------------------
18264 Extract response and send it to UMAC
18265 -------------------------------------------------------------------------*/
18266 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018267 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018268
18269 /*Notify UMAC*/
18270 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18271
Jeff Johnsone7245742012-09-05 17:12:55 -070018272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018273}/*WDI_ProcessSetTxPerTrackingRsp*/
18274
18275/*==========================================================================
18276 Indications from HAL
18277 ==========================================================================*/
18278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 indication of this kind is being received over the bus
18281 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018282
18283 @param pWDICtx: pointer to the WLAN DAL context
18284 pEventData: pointer to the event information structure
18285
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 @see
18287 @return Result of the function call
18288*/
18289WDI_Status
18290WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018291(
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 WDI_ControlBlockType* pWDICtx,
18293 WDI_EventInfoType* pEventData
18294)
18295{
18296 WDI_LowLevelIndType wdiInd;
18297 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18299
18300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 -------------------------------------------------------------------------*/
18303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18304 ( NULL == pEventData->pEventData))
18305 {
18306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 }
18311
18312 /*-------------------------------------------------------------------------
18313 Extract indication and send it to UMAC
18314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18316 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 sizeof(tHalRSSINotification));
18318
18319 /*Fill in the indication parameters*/
18320 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18321 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18322 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18323 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18324 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18325 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18326 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18327 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18328 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18329 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18330 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18331 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18332 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080018333 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18334 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018335
ltimariub77f24b2013-01-24 18:54:33 -080018336 if ( pWDICtx->wdiLowLevelIndCB )
18337 {
18338 /*Notify UMAC of indication*/
18339 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018341
18342 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018343}/*WDI_ProcessLowRSSIInd*/
18344
18345
18346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 an indication of this kind is being received over the
18349 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018350
18351 @param pWDICtx: pointer to the WLAN DAL context
18352 pEventData: pointer to the event information structure
18353
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 @see
18355 @return Result of the function call
18356*/
18357WDI_Status
18358WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018359(
Jeff Johnson295189b2012-06-20 16:38:30 -070018360 WDI_ControlBlockType* pWDICtx,
18361 WDI_EventInfoType* pEventData
18362)
18363{
18364 WDI_Status wdiStatus;
18365 eHalStatus halStatus;
18366 WDI_LowLevelIndType wdiInd;
18367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18368
18369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 -------------------------------------------------------------------------*/
18372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18373 ( NULL == pEventData->pEventData))
18374 {
18375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 }
18380
18381 /*-------------------------------------------------------------------------
18382 Extract indication and send it to UMAC
18383 -------------------------------------------------------------------------*/
18384 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18385 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018387
18388 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18390
ltimariub77f24b2013-01-24 18:54:33 -080018391 if ( pWDICtx->wdiLowLevelIndCB )
18392 {
18393 /*Notify UMAC*/
18394 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18395 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018396
18397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018398}/*WDI_ProcessMissedBeaconInd*/
18399
18400
18401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 an indication of this kind is being received over the
18404 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018405
18406 @param pWDICtx: pointer to the WLAN DAL context
18407 pEventData: pointer to the event information structure
18408
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 @see
18410 @return Result of the function call
18411*/
18412WDI_Status
18413WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018414(
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 WDI_ControlBlockType* pWDICtx,
18416 WDI_EventInfoType* pEventData
18417)
18418{
18419 WDI_Status wdiStatus;
18420 eHalStatus halStatus;
18421 WDI_LowLevelIndType wdiInd;
18422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18423
18424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 -------------------------------------------------------------------------*/
18427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18428 ( NULL == pEventData->pEventData))
18429 {
18430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 }
18435
18436 /*-------------------------------------------------------------------------
18437 Extract indication and send it to UMAC
18438 -------------------------------------------------------------------------*/
18439 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18440 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018442
18443 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018444 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 /* ! TO DO - fill in from HAL struct:
18446 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18447
ltimariub77f24b2013-01-24 18:54:33 -080018448 if ( pWDICtx->wdiLowLevelIndCB )
18449 {
18450 /*Notify UMAC*/
18451 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18452 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018453
18454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018455}/*WDI_ProcessUnkAddrFrameInd*/
18456
18457
18458/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018459 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 indication of this kind is being received over the bus
18461 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018462
18463 @param pWDICtx: pointer to the WLAN DAL context
18464 pEventData: pointer to the event information structure
18465
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 @see
18467 @return Result of the function call
18468*/
18469WDI_Status
18470WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018471(
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 WDI_ControlBlockType* pWDICtx,
18473 WDI_EventInfoType* pEventData
18474)
18475{
18476 WDI_LowLevelIndType wdiInd;
18477 tpSirMicFailureInd pHalMicFailureInd;
18478
18479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18480
18481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 -------------------------------------------------------------------------*/
18484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18485 ( NULL == pEventData->pEventData))
18486 {
18487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18494 /*-------------------------------------------------------------------------
18495 Extract indication and send it to UMAC
18496 -------------------------------------------------------------------------*/
18497
18498 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18501 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18502 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18503 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18504 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18505 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18506 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18507 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 pHalMicFailureInd->info.keyId;
18514 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18515 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18516 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18517 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080018518
18519 if ( pWDICtx->wdiLowLevelIndCB )
18520 {
18521 /*Notify UMAC*/
18522 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18523 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018524
18525 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018526}/*WDI_ProcessMicFailureInd*/
18527
18528
18529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018530 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 an indication of this kind is being received over the
18532 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018533
18534 @param pWDICtx: pointer to the WLAN DAL context
18535 pEventData: pointer to the event information structure
18536
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 @see
18538 @return Result of the function call
18539*/
18540WDI_Status
18541WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018542(
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 WDI_ControlBlockType* pWDICtx,
18544 WDI_EventInfoType* pEventData
18545)
18546{
18547 WDI_Status wdiStatus;
18548 eHalStatus halStatus;
18549 WDI_LowLevelIndType wdiInd;
18550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18551
18552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 -------------------------------------------------------------------------*/
18555 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18556 ( NULL == pEventData->pEventData))
18557 {
18558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 }
18563
18564 /*-------------------------------------------------------------------------
18565 Extract indication and send it to UMAC
18566 -------------------------------------------------------------------------*/
18567
18568 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18569 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018571
18572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18573 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018574
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18577 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018578
ltimariub77f24b2013-01-24 18:54:33 -080018579 if ( pWDICtx->wdiLowLevelIndCB )
18580 {
18581 /*Notify UMAC*/
18582 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18583 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018584
18585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018586}/*WDI_ProcessFatalErrorInd*/
18587
18588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018589 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 an indication of this kind is being received over the
18591 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018592
18593 @param pWDICtx: pointer to the WLAN DAL context
18594 pEventData: pointer to the event information structure
18595
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 @see
18597 @return Result of the function call
18598*/
18599WDI_Status
18600WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018601(
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 WDI_ControlBlockType* pWDICtx,
18603 WDI_EventInfoType* pEventData
18604)
18605{
18606 tDeleteStaContextParams halDelSTACtx;
18607 WDI_LowLevelIndType wdiInd;
18608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18609
18610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 -------------------------------------------------------------------------*/
18613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18614 ( NULL == pEventData->pEventData))
18615 {
18616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 }
18621
18622 /*-------------------------------------------------------------------------
18623 Extract indication and send it to UMAC
18624 -------------------------------------------------------------------------*/
18625
18626 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 wpalMemoryCopy( &halDelSTACtx,
18628 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 sizeof(halDelSTACtx));
18630
18631 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018633
18634 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18635 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18636 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18637 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18638
Jeff Johnsone7245742012-09-05 17:12:55 -070018639 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18644 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018645
ltimariub77f24b2013-01-24 18:54:33 -080018646 if ( pWDICtx->wdiLowLevelIndCB )
18647 {
18648 /*Notify UMAC*/
18649 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18650 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018651
18652 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018653}/*WDI_ProcessDelSTAInd*/
18654
18655/**
18656*@brief Process Coex Indication function (called when
18657 an indication of this kind is being received over the
18658 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018659
18660 @param pWDICtx: pointer to the WLAN DAL context
18661 pEventData: pointer to the event information structure
18662
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 @see
18664 @return Result of the function call
18665*/
18666WDI_Status
18667WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018668(
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 WDI_ControlBlockType* pWDICtx,
18670 WDI_EventInfoType* pEventData
18671)
18672{
18673 WDI_LowLevelIndType wdiInd;
18674 tCoexIndMsg halCoexIndMsg;
18675 wpt_uint32 index;
18676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18677
18678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 -------------------------------------------------------------------------*/
18681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18682 ( NULL == pEventData->pEventData ))
18683 {
18684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 }
18689
18690 /*-------------------------------------------------------------------------
18691 Extract indication and send it to UMAC
18692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18694 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 sizeof(halCoexIndMsg.coexIndParams) );
18696
18697 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018698 wdiInd.wdiIndicationType = WDI_COEX_IND;
18699 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18701 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 }
18704
18705 // DEBUG
18706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18707 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18709 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18710 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18711 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18712 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018713
ltimariub77f24b2013-01-24 18:54:33 -080018714 if ( pWDICtx->wdiLowLevelIndCB )
18715 {
18716 /*Notify UMAC*/
18717 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18718 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018719
18720 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018721}/*WDI_ProcessCoexInd*/
18722
18723/**
18724*@brief Process Tx Complete Indication function (called when
18725 an indication of this kind is being received over the
18726 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018727
18728 @param pWDICtx: pointer to the WLAN DAL context
18729 pEventData: pointer to the event information structure
18730
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 @see
18732 @return Result of the function call
18733*/
18734WDI_Status
18735WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018736(
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 WDI_ControlBlockType* pWDICtx,
18738 WDI_EventInfoType* pEventData
18739)
18740{
18741 WDI_LowLevelIndType wdiInd;
18742 tTxComplIndMsg halTxComplIndMsg;
18743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18744
18745 /*-------------------------------------------------------------------------
18746 Sanity check
18747 -------------------------------------------------------------------------*/
18748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18749 ( NULL == pEventData->pEventData ))
18750 {
18751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 WDI_ASSERT( 0 );
18754 return WDI_STATUS_E_FAILURE;
18755 }
18756
18757 /*-------------------------------------------------------------------------
18758 Extract indication and send it to UMAC
18759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18761 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 sizeof(halTxComplIndMsg.txComplParams) );
18763
18764 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18766 wdiInd.wdiIndicationData.tx_complete_status
18767 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018768
ltimariub77f24b2013-01-24 18:54:33 -080018769 if ( pWDICtx->wdiLowLevelIndCB )
18770 {
18771 /*Notify UMAC*/
18772 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18773 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018774
18775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018776}/*WDI_ProcessTxCompleteInd*/
18777
18778#ifdef WLAN_FEATURE_P2P
18779/**
Viral Modid86bde22012-12-10 13:09:21 -080018780*@brief Process Noa Start Indication function (called when
18781 an indication of this kind is being received over the
18782 bus from HAL)
18783
18784 @param pWDICtx: pointer to the WLAN DAL context
18785 pEventData: pointer to the event information structure
18786
18787 @see
18788 @return Result of the function call
18789*/
18790WDI_Status
18791WDI_ProcessP2pNoaStartInd
18792(
18793 WDI_ControlBlockType* pWDICtx,
18794 WDI_EventInfoType* pEventData
18795)
18796{
18797 WDI_LowLevelIndType wdiInd;
18798 tNoaStartIndMsg halNoaStartIndMsg;
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,
18808 "%s: Invalid parameters", __func__);
18809 WDI_ASSERT( 0 );
18810 return WDI_STATUS_E_FAILURE;
18811 }
18812
18813 /*-------------------------------------------------------------------------
18814 Extract indication and send it to UMAC
18815 -------------------------------------------------------------------------*/
18816 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18817 pEventData->pEventData,
18818 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18819
18820 /*Fill in the indication parameters*/
18821 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18822
18823 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18824 = halNoaStartIndMsg.noaStartIndParams.status;
18825
18826 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18827 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18828
18829 /*Notify UMAC*/
18830 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18831
18832 return WDI_STATUS_SUCCESS;
18833}/*WDI_ProcessNoaAttrInd*/
18834
18835/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018836*@brief Process Noa Attr 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_ProcessP2pNoaAttrInd
18848(
18849 WDI_ControlBlockType* pWDICtx,
18850 WDI_EventInfoType* pEventData
18851)
18852{
18853 WDI_LowLevelIndType wdiInd;
18854 tNoaAttrIndMsg halNoaAttrIndMsg;
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,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 WDI_ASSERT( 0 );
18866 return WDI_STATUS_E_FAILURE;
18867 }
18868
18869 /*-------------------------------------------------------------------------
18870 Extract indication and send it to UMAC
18871 -------------------------------------------------------------------------*/
18872 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18873 pEventData->pEventData,
18874 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18875
18876 /*Fill in the indication parameters*/
18877 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018878
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18880 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018881
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18883 = halNoaAttrIndMsg.noaAttrIndParams.index;
18884 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18885 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18886 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18887 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018888
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18890 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18891 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18892 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18893 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18894 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18895 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18896 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018897
Jeff Johnson295189b2012-06-20 16:38:30 -070018898 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18899 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18900 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18901 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18902 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18903 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18904 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18905 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18906
ltimariub77f24b2013-01-24 18:54:33 -080018907 if ( pWDICtx->wdiLowLevelIndCB )
18908 {
18909 /*Notify UMAC*/
18910 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18911 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018912
18913 return WDI_STATUS_SUCCESS;
18914}/*WDI_ProcessNoaAttrInd*/
18915#endif
18916
18917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 an indication of this kind is being received over the
18920 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018921
18922 @param pWDICtx: pointer to the WLAN DAL context
18923 pEventData: pointer to the event information structure
18924
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 @see
18926 @return Result of the function call
18927*/
18928WDI_Status
18929WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018930(
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 WDI_ControlBlockType* pWDICtx,
18932 WDI_EventInfoType* pEventData
18933)
18934{
18935 WDI_LowLevelIndType wdiInd;
18936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018937
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 /*-------------------------------------------------------------------------
18939 Extract indication and send it to UMAC
18940 -------------------------------------------------------------------------*/
18941 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018942 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18943
ltimariub77f24b2013-01-24 18:54:33 -080018944 if ( pWDICtx->wdiLowLevelIndCB )
18945 {
18946 /*Notify UMAC*/
18947 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18948 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018949
Jeff Johnsone7245742012-09-05 17:12:55 -070018950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018951}/*WDI_ProcessTxPerHitInd*/
18952
18953#ifdef ANI_MANF_DIAG
18954/**
18955 @brief WDI_ProcessFTMCommandReq
18956 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018957
18958 @param pWDICtx: pointer to the WLAN DAL context
18959 pEventData: pointer to the event information structure
18960
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 @see
18962 @return Result of the function call
18963*/
18964WDI_Status
18965WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018966(
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 WDI_ControlBlockType* pWDICtx,
18968 WDI_EventInfoType* pEventData
18969)
18970{
18971 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18972 wpt_uint8 *ftmCommandBuffer = NULL;
18973 wpt_uint16 dataOffset;
18974 wpt_uint16 bufferSize;
18975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 -------------------------------------------------------------------------*/
18978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18979 ( NULL == pEventData->pEventData))
18980
18981 {
18982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 }
18987
18988 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18989
18990 /* Get MSG Buffer */
18991 WDI_GetMessageBuffer(pWDICtx,
18992 WDI_FTM_CMD_REQ,
18993 ftmCommandReq->bodyLength,
18994 &ftmCommandBuffer,
18995 &dataOffset,
18996 &bufferSize);
18997
18998 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18999 ftmCommandReq->FTMCommandBody,
19000 ftmCommandReq->bodyLength);
19001
19002 /* Send MSG */
19003 return WDI_SendMsg(pWDICtx,
19004 ftmCommandBuffer,
19005 bufferSize,
19006 pEventData->pCBfnc,
19007 pEventData->pUserData,
19008 WDI_FTM_CMD_RESP);
19009}
19010
19011/**
19012 @brief WDI_ProcessFTMCommandRsp
19013 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019014
19015 @param pWDICtx: pointer to the WLAN DAL context
19016 pEventData: pointer to the event information structure
19017
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 @see
19019 @return Result of the function call
19020*/
19021WDI_Status
19022WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019023(
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 WDI_ControlBlockType* pWDICtx,
19025 WDI_EventInfoType* pEventData
19026)
19027{
19028 WDI_FTMCommandRspCb ftmCMDRspCb;
19029 tProcessPttRspParams *ftmCMDRspData = NULL;
19030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19031
19032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 -------------------------------------------------------------------------*/
19035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19036 ( NULL == pEventData->pEventData))
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 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19045
19046 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19047
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19049 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19051
19052 /*Notify UMAC*/
19053 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19054
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019056}
19057#endif /* ANI_MANF_DIAG */
19058/**
19059 @brief WDI_ProcessHalDumpCmdReq
19060 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019061
19062 @param pWDICtx: pointer to the WLAN DAL context
19063 pEventData: pointer to the event information structure
19064
Jeff Johnson295189b2012-06-20 16:38:30 -070019065 @see
19066 @return Result of the function call
19067*/
19068WDI_Status
19069WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019070(
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 WDI_ControlBlockType* pWDICtx,
19072 WDI_EventInfoType* pEventData
19073)
19074{
19075 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19076 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19077 wpt_uint16 usDataOffset = 0;
19078 wpt_uint16 usSendSize = 0;
19079 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019081
19082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 -------------------------------------------------------------------------*/
19085 if (( NULL == pEventData ) ||
19086 ( NULL == pEventData->pEventData) ||
19087 ( NULL == pEventData->pCBfnc ))
19088 {
19089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 }
19094
19095 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19096 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19097
19098 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019109
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 /*-----------------------------------------------------------------------
19111 Get message buffer
19112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19115 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19118 {
19119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19120 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19121 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 }
19125
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 wpalMemoryCopy( pSendBuffer+usDataOffset,
19127 &halDumpCmdReqMsg.dumpCmdReqParams,
19128 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019129
19130 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019132
19133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19137 wdiHALDumpCmdRspCb, pEventData->pUserData,
19138 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019139}
19140
19141/**
19142 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 Process hal Dump Command Response from HAL, simply route to HDD
19144
19145 @param pWDICtx: pointer to the WLAN DAL context
19146 pEventData: pointer to the event information structure
19147
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 @see
19149 @return Result of the function call
19150*/
19151WDI_Status
19152WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019153(
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx,
19155 WDI_EventInfoType* pEventData
19156)
19157{
19158 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080019159 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19161
19162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 -------------------------------------------------------------------------*/
19165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19166 ( NULL == pEventData->pEventData))
19167 {
19168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 }
19173
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
19176 /*Initialize the WDI Response structure */
19177 wdiHALDumpCmdRsp.usBufferLen = 0;
19178 wdiHALDumpCmdRsp.pBuffer = NULL;
19179
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080019180 wpalMemoryCopy( &halDumpCmdRspParams,
19181 pEventData->pEventData,
19182 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019183
19184 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080019185 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019186
19187 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080019188 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 {
19190 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080019191 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19192 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19193
19194 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19195 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19197 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019198
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 /*Notify UMAC*/
19200 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19201
19202 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19203 {
19204 /* Free the allocated buffer */
19205 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19206 }
19207 return WDI_STATUS_SUCCESS;
19208}
19209
19210/*==========================================================================
19211 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019212
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019215==========================================================================*/
19216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 when it wishes to send up a notification like the ones
19219 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
Jeff Johnson295189b2012-06-20 16:38:30 -070019221 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019222
19223 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 wctsNotifyCBData: the callback data of the user
19226
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019228
19229 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019230*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019231void
Jeff Johnson295189b2012-06-20 16:38:30 -070019232WDI_NotifyMsgCTSCB
19233(
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 WCTS_NotifyEventType wctsEvent,
19236 void* wctsNotifyCBData
19237)
19238{
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19241
19242 if (NULL == pWDICtx )
19243 {
19244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019247 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019248 }
19249
19250 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19251 {
19252 /* callback presumably occurred after close */
19253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019254 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 }
19257
19258 if ( WCTS_EVENT_OPEN == wctsEvent )
19259 {
19260 /*Flag must be set atomically as it is checked from incoming request
19261 functions*/
19262 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019264
19265 /*Nothing to do - so try to dequeue any pending request that may have
19266 occurred while we were trying to establish this*/
19267 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019268 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 {
19272 /*Flag must be set atomically as it is checked from incoming request
19273 functions*/
19274 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019276
19277 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 wpalMutexRelease(&pWDICtx->wptMutex);
19280
19281 /*Notify that the Control Channel is closed */
19282 wpalEventSet(&pWDICtx->wctsActionEvent);
19283 }
19284
19285}/*WDI_NotifyMsgCTSCB*/
19286
19287
19288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019289 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 when it wishes to send up a packet received over the
19291 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019292
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019294
19295 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 pMsg: the packet
19297 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019298 wctsRxMsgCBData: the callback data of the user
19299
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019301
19302 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019303*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019304void
19305WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019306(
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 void* pMsg,
19309 wpt_uint32 uLen,
19310 void* wctsRxMsgCBData
19311)
19312{
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 tHalMsgHeader *pHalMsgHeader;
19314 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19317
19318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019321 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 ( uLen < sizeof(tHalMsgHeader)))
19323 {
19324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 }
19329
19330 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19331 {
19332 /* callback presumably occurred after close */
19333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019334 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019335 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 }
19337
Jeff Johnsone7245742012-09-05 17:12:55 -070019338 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 context - so no serialization is necessary here
19340 ! - revisit this assumption */
19341
19342 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19343
19344 if ( uLen != pHalMsgHeader->msgLen )
19345 {
19346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19347 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019348 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19349 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 }
19351
19352 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19353
19354 /*The message itself starts after the header*/
19355 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19356 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19357 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19358 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19359
19360
19361 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19362 {
19363 /*Stop the timer as the response was received */
19364 /*!UT - check for potential race conditions between stop and response */
19365 wpalTimerStop(&pWDICtx->wptResponseTimer);
19366 }
19367 /* Check if we receive a response message which is not expected */
19368 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19369 {
19370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19371 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19372 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19375 pWDICtx->wdiExpectedResponse);
19376 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19377 return;
19378 }
19379
19380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19381 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19382
19383 /*Post response event to the state machine*/
19384 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19385
19386}/*WDI_RXMsgCTSCB*/
19387
19388
19389/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019391========================================================================*/
19392
19393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019396
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 @param pWDICtx - pointer to the control block
19398
19399 @return Result of the function call
19400*/
19401WPT_INLINE WDI_Status
19402WDI_CleanCB
19403(
19404 WDI_ControlBlockType* pWDICtx
19405)
19406{
19407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19408
19409 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019411
Jeff Johnsone7245742012-09-05 17:12:55 -070019412 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19414 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19415
19416 WDI_ResetAssocSessions( pWDICtx );
19417
19418 return WDI_STATUS_SUCCESS;
19419}/*WDI_CleanCB*/
19420
19421
19422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019424
Jeff Johnsone7245742012-09-05 17:12:55 -070019425
19426 @param pWDICtx: pointer to the WLAN DAL context
19427 pEventData: pointer to the event information structure
19428
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 @see
19430 @return Result of the function call
19431*/
19432WPT_INLINE WDI_Status
19433WDI_ProcessRequest
19434(
19435 WDI_ControlBlockType* pWDICtx,
19436 WDI_EventInfoType* pEventData
19437)
19438{
19439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19440
Jeff Johnsone7245742012-09-05 17:12:55 -070019441 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 already checked these pointers*/
19443
19444 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19445 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19448 "Calling request processing function for req %s (%d) %x",
19449 WDI_getReqMsgString(pEventData->wdiRequest),
19450 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19451 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19452 }
19453 else
19454 {
19455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019456 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 pEventData->wdiRequest);
19458 return WDI_STATUS_E_NOT_IMPLEMENT;
19459 }
19460}/*WDI_ProcessRequest*/
19461
19462
19463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019464 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 prefixes it with a send message header
19467
19468 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 wdiReqType: type of the request being sent
19470 uBufferLen: message buffer len
19471 pMsgBuffer: resulting allocated buffer
19472 pusDataOffset: offset in the buffer where the caller
19473 can start copying its message data
19474 puBufferSize: the resulting buffer size (offset+buff
19475 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019476
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 @see
19478 @return Result of the function call
19479*/
19480WDI_Status
19481WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019482(
19483 WDI_ControlBlockType* pWDICtx,
19484 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 wpt_uint8** pMsgBuffer,
19487 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 wpt_uint16* pusBufferSize
19489)
19490{
19491 tHalMsgHeader halMsgHeader;
19492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19493
Jeff Johnsone7245742012-09-05 17:12:55 -070019494 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 again*/
19496
19497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19502 if ( NULL == *pMsgBuffer )
19503 {
19504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19505 "Unable to allocate message buffer for req %s (%d)",
19506 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 }
19511
19512 /*-------------------------------------------------------------------------
19513 Fill in the message header
19514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019515 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19516 /* Fill msgVersion */
19517#ifdef WLAN_FEATURE_11AC
19518 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019519 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 else
19521#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019522 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019523
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19525 *pusDataOffset = sizeof(halMsgHeader);
19526 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19527
19528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019529}/*WDI_GetMessageBuffer*/
19530
19531
19532/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 the CB
19536
19537 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019539
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 usSendSize size of the buffer to be sent
19541 pRspCb: response callback - save in the WDI
19542 CB
19543 pUserData: user data associated with the
19544 callback
19545 wdiExpectedResponse: the code of the response that is
19546 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019547
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 @see
19549 @return Result of the function call
19550*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019552WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019553(
19554 WDI_ControlBlockType* pWDICtx,
19555 wpt_uint8* pSendBuffer,
19556 wpt_uint32 usSendSize,
19557 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 void* pUserData,
19559 WDI_ResponseEnumType wdiExpectedResponse
19560)
19561{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019562 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019563 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19565
19566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 ------------------------------------------------------------------------*/
19569 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 pWDICtx->pfncRspCB = pRspCb;
19571 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019572
19573 /*-----------------------------------------------------------------------
19574 Call the CTS to send this message over - free message afterwards
19575 - notify transport failure
19576 Note: CTS is reponsible for freeing the message buffer.
19577 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019578 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19579 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19580 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019583 "Failed to send message over the bus - catastrophic failure");
19584
Jeff Johnsond13512a2012-07-17 11:42:19 -070019585 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019587 else
19588 {
19589 /* even when message was placed in CTS deferred Q, we will treat it
19590 success but log this info
19591 */
19592 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19593 {
19594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19595 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19596 "response %s (%d)",
19597 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19598 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019599 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019600 }
19601 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019602
Jeff Johnsond13512a2012-07-17 11:42:19 -070019603 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 if ( NULL != pWDICtx->wdiReqStatusCB )
19605 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019606 /*Inform originator whether request went through or not*/
19607 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19608 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 pWDICtx->wdiReqStatusCB = NULL;
19610 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019611 callback(wdiStatus, callbackContext);
19612
19613 /*For WDI requests which have registered a request callback,
19614 inform the WDA caller of the same via setting the return value
19615 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19616 end up repeating the functonality in the req callback for the
19617 WDI_STATUS_E_FAILURE case*/
19618 if (wdiStatus == WDI_STATUS_E_FAILURE)
19619 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 }
19621
Jeff Johnsond13512a2012-07-17 11:42:19 -070019622 if ( wdiStatus == WDI_STATUS_SUCCESS )
19623 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 /*Start timer for the expected response */
19625 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019626
19627 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019628 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019629 }
19630 else
19631 {
Jeff Johnson902c9832012-12-10 14:28:09 -080019632 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019633 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19634 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019635
Jeff Johnsond13512a2012-07-17 11:42:19 -070019636 return wdiStatus;
19637
Jeff Johnson295189b2012-06-20 16:38:30 -070019638}/*WDI_SendMsg*/
19639
19640
19641
19642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 the bus using the control transport and saves some info
19645 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019646
19647 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 pSendBuffer: buffer to be sent
19649 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019650
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 @see
19652 @return Result of the function call
19653*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019655WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019656(
19657 WDI_ControlBlockType* pWDICtx,
19658 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 wpt_uint32 usSendSize
19660)
19661{
19662 wpt_uint32 uStatus ;
19663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19664
19665 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019666 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019667 Note: CTS is reponsible for freeing the message buffer.
19668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 (void*)pSendBuffer, usSendSize );
19671
19672 /*Inform Upper MAC about the outcome of the request*/
19673 if ( NULL != pWDICtx->wdiReqStatusCB )
19674 {
19675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19676 "Send indication status : %d", uStatus);
19677
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019678 /* even if CTS placed indication into its deferred Q, we treat it
19679 * as success and let CTS drain its queue as per smd interrupt to CTS
19680 */
19681 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 -070019682 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 }
19684
19685 /*If sending of the message failed - it is considered catastrophic and
19686 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019687 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19688 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19689
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 {
19691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
19694 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19695 return WDI_STATUS_E_FAILURE;
19696 }
19697
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699}/*WDI_SendIndication*/
19700
19701
19702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019703 @brief WDI_DetectedDeviceError - called internally by DAL when
19704 it has detected a failure in the device
19705
19706 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 usErrorCode: error code detected by WDI or received
19708 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019709
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019712*/
19713void
19714WDI_DetectedDeviceError
19715(
19716 WDI_ControlBlockType* pWDICtx,
19717 wpt_uint16 usErrorCode
19718)
19719{
19720 WDI_LowLevelIndType wdiInd;
19721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19722
19723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19724 "Device Error detected code: %d - transitioning to stopped state",
19725 usErrorCode);
19726
19727 wpalMutexAcquire(&pWDICtx->wptMutex);
19728
19729 WDI_STATableStop(pWDICtx);
19730
19731 WDI_ResetAssocSessions(pWDICtx);
19732
19733 /*Set the expected state transition to stopped - because the device
19734 experienced a failure*/
19735 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19736
19737 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
19742 /*TO DO: - there should be an attempt to reset the device here*/
19743
19744 wpalMutexRelease(&pWDICtx->wptMutex);
19745
19746 /*------------------------------------------------------------------------
19747 Notify UMAC if a handler is registered
19748 ------------------------------------------------------------------------*/
19749 if (pWDICtx->wdiLowLevelIndCB)
19750 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19752 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019753
19754 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19755 }
19756}/*WDI_DetectedDeviceError*/
19757
19758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 we started on send message has expire - this should
19761 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 reply - trigger catastrophic failure
19763 @param
19764
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019766
19767 @see
19768 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019769*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019770void
Jeff Johnson295189b2012-06-20 16:38:30 -070019771WDI_ResponseTimerCB
19772(
19773 void *pUserData
19774)
19775{
19776 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19778
19779 if (NULL == pWDICtx )
19780 {
19781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 }
19786
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019787 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080019788 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019789
19790 /* If response timer is running at this time that means this timer
19791 * event is not for the last request but rather last-to-last request and
19792 * this timer event has come after we recevied respone for last-to-last
19793 * message
19794 */
19795 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19796 {
19797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19798 "WDI_ResponseTimerCB: timer in running state on timer event, "
19799 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19800 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19801 return;
19802 }
19803
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19805 {
19806
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019808 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019809 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019811 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19812 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 /* WDI timeout means Riva is not responding or SMD communication to Riva
19814 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019815 * is to initiate SSR from APPS
19816 * There is also an option to re-enable wifi, which will eventually
19817 * trigger SSR
19818 */
19819#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019820 wpalWcnssResetIntr();
19821 /* if this timer fires, it means Riva did not receive the FIQ */
19822 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019823#else
19824 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19825 wpalWlanReload();
19826#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 }
19828 else
19829 {
19830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080019831 "Timeout occurred but not waiting for any response %d "
19832 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19833 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19834 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 }
19836
19837 return;
19838
19839}/*WDI_ResponseTimerCB*/
19840
19841
19842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019844
Jeff Johnsone7245742012-09-05 17:12:55 -070019845
19846 @param pWDICtx: pointer to the WLAN DAL context
19847 pEventData: pointer to the event information structure
19848
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 @see
19850 @return Result of the function call
19851*/
19852WPT_INLINE WDI_Status
19853WDI_ProcessResponse
19854(
19855 WDI_ControlBlockType* pWDICtx,
19856 WDI_EventInfoType* pEventData
19857)
19858{
19859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19860
Jeff Johnsone7245742012-09-05 17:12:55 -070019861 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 already checked these pointers
19863 ! - revisit this assumption */
19864 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19865 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 WDI_getRespMsgString(pEventData->wdiResponse),
19870 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19871 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19872 }
19873 else
19874 {
19875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019876 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 pEventData->wdiResponse);
19878 return WDI_STATUS_E_NOT_IMPLEMENT;
19879 }
19880}/*WDI_ProcessResponse*/
19881
19882
19883/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019884 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019885=========================================================================*/
19886
19887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 @brief Utility function used by the DAL Core to help queue a
19889 request that cannot be processed right away.
19890 @param
19891
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 pWDICtx: - pointer to the WDI control block
19893 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019894 queued
19895
19896 @see
19897 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019898*/
19899WDI_Status
19900WDI_QueuePendingReq
19901(
19902 WDI_ControlBlockType* pWDICtx,
19903 WDI_EventInfoType* pEventData
19904)
19905{
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19910
19911 if ( NULL == pEventDataQueue )
19912 {
19913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 WDI_ASSERT(0);
19916 return WDI_STATUS_MEM_FAILURE;
19917 }
19918
19919 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19920 pEventDataQueue->pUserData = pEventData->pUserData;
19921 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19922 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019924
19925 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19926 {
19927 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019928
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 if ( NULL == pEventInfo )
19930 {
19931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019932 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 WDI_ASSERT(0);
19934 wpalMemoryFree(pEventDataQueue);
19935 return WDI_STATUS_MEM_FAILURE;
19936 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019937
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19939
19940 }
19941 pEventDataQueue->pEventData = pEventInfo;
19942
19943 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019945
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019947
19948 return WDI_STATUS_SUCCESS;
19949}/*WDI_QueuePendingReq*/
19950
19951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019954 @param
19955
19956 pMsg - pointer to the message
19957
19958 @see
19959 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019960*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019961void
Jeff Johnson295189b2012-06-20 16:38:30 -070019962WDI_PALCtrlMsgCB
19963(
19964 wpt_msg *pMsg
19965)
19966{
19967 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 WDI_ControlBlockType* pWDICtx = NULL;
19969 WDI_Status wdiStatus;
19970 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 void* pUserData;
19972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19973
19974 if (( NULL == pMsg )||
19975 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19976 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19977 {
19978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019981 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 }
19983
19984 /*Transition back to the state that we had before serialization
19985 - serialization transitions us to BUSY to stop any incomming requests
19986 ! TO DO L: possible race condition here if a request comes in between the
19987 state transition and the post function*/
19988
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019990
19991 /*-----------------------------------------------------------------------
19992 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 -----------------------------------------------------------------------*/
19995 switch ( pEventData->wdiRequest )
19996 {
19997
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20000 break;
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 case WDI_NV_DOWNLOAD_REQ:
20003 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20004 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20005 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20006 {
20007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020008 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20010 }
20011 else
20012 {
20013 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20014 }
20015
20016 break;
20017
20018 default:
20019 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20020 break;
20021 }/*switch ( pEventData->wdiRequest )*/
20022
20023 if ( WDI_STATUS_SUCCESS != wdiStatus )
20024 {
20025 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20026
20027 if ( NULL != pfnReqStatusCB )
20028 {
20029 /*Fail the request*/
20030 pfnReqStatusCB( wdiStatus, pUserData);
20031 }
20032 }
20033
20034 /* Free data - that was allocated when queueing*/
20035 if( pEventData != NULL )
20036 {
20037 if( pEventData->pEventData != NULL )
20038 {
20039 wpalMemoryFree(pEventData->pEventData);
20040 }
20041 wpalMemoryFree(pEventData);
20042 }
20043
20044 if( pMsg != NULL )
20045 {
20046 wpalMemoryFree(pMsg);
20047 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020048
Jeff Johnson295189b2012-06-20 16:38:30 -070020049}/*WDI_PALCtrlMsgCB*/
20050
20051/**
20052 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 and schedule for execution a pending request
20054 @param
20055
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 pWDICtx: - pointer to the WDI control block
20057 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 queued
20059
20060 @see
20061 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020062*/
20063WDI_Status
20064WDI_DequeuePendingReq
20065(
20066 WDI_ControlBlockType* pWDICtx
20067)
20068{
Jeff Johnsone7245742012-09-05 17:12:55 -070020069 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20073
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075
20076 if ( NULL == pNode )
20077 {
20078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 return WDI_STATUS_SUCCESS;
20081 }
20082
20083 /*The node actually points to the 1st element inside the Event Data struct -
20084 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020086
20087 /*Serialize processing in the control thread
20088 !TO DO: - check to see if these are all the messages params that need
20089 to be filled in*/
20090 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20091
20092 if ( NULL == palMsg )
20093 {
20094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020097 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020098 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 palMsg->callback = WDI_PALCtrlMsgCB;
20101 palMsg->ptr = pEventData;
20102
20103 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 palMsg->val = pWDICtx->uGlobalState;
20105
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 /*Transition back to BUSY as we need to handle a queued request*/
20107 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020108
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20110
20111 return WDI_STATUS_PENDING;
20112}/*WDI_DequeuePendingReq*/
20113
20114
20115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 away.- The assoc requests will be queued by BSSID
20119 @param
20120
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 pWDICtx: - pointer to the WDI control block
20122 pEventData: pointer to the evnt info that needs to be queued
20123 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020124
20125 @see
20126 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020127*/
20128WDI_Status
20129WDI_QueueNewAssocRequest
20130(
20131 WDI_ControlBlockType* pWDICtx,
20132 WDI_EventInfoType* pEventData,
20133 wpt_macAddr macBSSID
20134)
20135{
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 wpt_uint8 i;
20137 WDI_BSSSessionType* pSession = NULL;
20138 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 void* pEventInfo;
20141 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020143
Jeff Johnsone7245742012-09-05 17:12:55 -070020144
20145 /*------------------------------------------------------------------------
20146 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 ------------------------------------------------------------------------*/
20148 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20149 {
20150 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20151 {
20152 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 pSession = &pWDICtx->aBSSSessions[i];
20154 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 }
20156 }
20157
20158 if ( i >= WDI_MAX_BSS_SESSIONS )
20159 {
20160 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 /*------------------------------------------------------------------------
20165 Fill in the BSSID for this session and set the usage flag
20166 ------------------------------------------------------------------------*/
20167 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169
20170 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 ------------------------------------------------------------------------*/
20173 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20174 if ( NULL == pEventDataQueue )
20175 {
20176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020177 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 WDI_ASSERT(0);
20179 return WDI_STATUS_MEM_FAILURE;
20180 }
20181
20182 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20183 if ( NULL == pSessionIdElement )
20184 {
20185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020186 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020187 WDI_ASSERT(0);
20188 wpalMemoryFree(pEventDataQueue);
20189 return WDI_STATUS_MEM_FAILURE;
20190 }
20191
20192 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20193 if ( NULL == pEventInfo )
20194 {
20195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020196 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020197 WDI_ASSERT(0);
20198 wpalMemoryFree(pSessionIdElement);
20199 wpalMemoryFree(pEventDataQueue);
20200 return WDI_STATUS_MEM_FAILURE;
20201 }
20202
20203 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20204 pEventDataQueue->pUserData = pEventData->pUserData;
20205 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20206 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020208
20209 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20210 pEventDataQueue->pEventData = pEventInfo;
20211
20212 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020214
20215 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020219
20220 /*We need to maintain a separate list that keeps track of the order in which
20221 the new assoc requests are being queued such that we can start processing
20222 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 pSessionIdElement->ucIndex = i;
20224 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225
20226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20227 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020229
20230 /*Return pending as this is what the status of the request is since it has
20231 been queued*/
20232 return WDI_STATUS_PENDING;
20233}/*WDI_QueueNewAssocRequest*/
20234
20235/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020238 away.- The assoc requests will be queued by BSSID
20239 @param
20240
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 pWDICtx: - pointer to the WDI control block
20242 pSession: - session in which to queue
20243 pEventData: pointer to the event info that needs to be
20244 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020245
20246 @see
20247 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020248*/
20249WDI_Status
20250WDI_QueueAssocRequest
20251(
20252 WDI_ControlBlockType* pWDICtx,
20253 WDI_BSSSessionType* pSession,
20254 WDI_EventInfoType* pEventData
20255)
20256{
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020259 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020261
20262 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 Sanity check
20264 ------------------------------------------------------------------------*/
20265 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20266 {
20267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020269
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 }
20272
20273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 ------------------------------------------------------------------------*/
20276 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20277 if ( NULL == pEventDataQueue )
20278 {
20279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020280 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 WDI_ASSERT(0);
20282 return WDI_STATUS_MEM_FAILURE;
20283 }
20284
20285 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20286 if ( NULL == pEventInfo )
20287 {
20288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20289 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020290 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 WDI_ASSERT(0);
20292 wpalMemoryFree(pEventDataQueue);
20293 return WDI_STATUS_MEM_FAILURE;
20294 }
20295
20296 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20297 pEventDataQueue->pUserData = pEventData->pUserData;
20298 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20299 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 pEventDataQueue->pEventData = pEventInfo;
20302
20303 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20304
20305 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020307
20308 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020310
Jeff Johnsone7245742012-09-05 17:12:55 -070020311 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020312
20313 /*The result of this operation is pending because the request has been
20314 queued and it will be processed at a later moment in time */
20315 return WDI_STATUS_PENDING;
20316}/*WDI_QueueAssocRequest*/
20317
20318/**
20319 @brief Utility function used by the DAL Core to help dequeue
20320 an association request that was pending
20321 The request will be queued up in front of the main
20322 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020323 @param
20324
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020326
20327
20328 @see
20329 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020330*/
20331WDI_Status
20332WDI_DequeueAssocRequest
20333(
20334 WDI_ControlBlockType* pWDICtx
20335)
20336{
Jeff Johnsone7245742012-09-05 17:12:55 -070020337 wpt_list_node* pNode = NULL;
20338 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 WDI_BSSSessionType* pSession;
20340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020341
20342 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 Sanity check
20344 ------------------------------------------------------------------------*/
20345 if ( NULL == pWDICtx )
20346 {
20347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020349
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 }
20352
20353 /*------------------------------------------------------------------------
20354 An association has been completed => a new association can occur
20355 Check to see if there are any pending associations ->
20356 If so , transfer all the pending requests into the busy queue for
20357 processing
20358 These requests have arrived prior to the requests in the busy queue
20359 (bc they needed to be processed in order to be placed in this queue)
20360 => they will be placed at the front of the busy queue
20361 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020363
20364 if ( NULL == pNode )
20365 {
20366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020367 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020368 return WDI_STATUS_SUCCESS;
20369 }
20370
20371 /*The node actually points to the 1st element inside the Session Id struct -
20372 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020374
20375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20376 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20377
20378 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20379 {
20380 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 the front of the main waiting queue for subsequent execution*/
20384 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 while ( NULL != pNode )
20386 {
20387 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20389 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 }
20393 else
20394 {
20395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 WPAL_ASSERT(0);
20398 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020401
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20403 wpalMemoryFree(pSessionIdElement);
20404 return WDI_STATUS_SUCCESS;
20405}/*WDI_DequeueAssocRequest*/
20406
20407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020409 pending requests - all req cb will be called with
20410 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020411 @param
20412
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020414
20415 @see
20416 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020417*/
20418WDI_Status
20419WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020420(
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 WDI_ControlBlockType* pWDICtx
20422)
20423{
Jeff Johnsone7245742012-09-05 17:12:55 -070020424 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 void* pUserData;
20428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20429
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020431
20432 /*------------------------------------------------------------------------
20433 Go through all the requests and fail them - this will only be called
20434 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 ------------------------------------------------------------------------*/
20437 while( pNode )
20438 {
20439 /*The node actually points to the 1st element inside the Event Data struct -
20440 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 pEventDataQueue = (WDI_EventInfoType*)pNode;
20442
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20444 if ( NULL != pfnReqStatusCB )
20445 {
20446 /*Fail the request*/
20447 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20448 }
20449 /* Free data - that was allocated when queueing */
20450 if ( pEventDataQueue->pEventData != NULL )
20451 {
20452 wpalMemoryFree(pEventDataQueue->pEventData);
20453 }
20454 wpalMemoryFree(pEventDataQueue);
20455
20456 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20457 {
20458 break;
20459 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 }
20461
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 return WDI_STATUS_SUCCESS;
20463}/*WDI_ClearPendingRequests*/
20464
20465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 @brief Helper routine used to init the BSS Sessions in the WDI control block
20467
20468
20469 @param pWDICtx: pointer to the WLAN DAL context
20470
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 @see
20472*/
20473void
20474WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020475(
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 WDI_ControlBlockType* pWDICtx
20477)
20478{
Jeff Johnsone7245742012-09-05 17:12:55 -070020479 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20481
20482 /*-------------------------------------------------------------------------
20483 No Sanity check
20484 -------------------------------------------------------------------------*/
20485 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20486 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20489 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20490 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20491 }
20492}/*WDI_ResetAssocSessions*/
20493
20494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 @brief Helper routine used to find a session based on the BSSID
20496
20497
20498 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 pSession: pointer to the session (if found)
20501
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020504*/
20505wpt_uint8
20506WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020507(
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 WDI_ControlBlockType* pWDICtx,
20509 wpt_macAddr macBSSID,
20510 WDI_BSSSessionType** ppSession
20511)
20512{
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20515
20516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 -------------------------------------------------------------------------*/
20519 if ( NULL == ppSession )
20520 {
20521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020522 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 }
20525
Jeff Johnsone7245742012-09-05 17:12:55 -070020526 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020527
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 /*------------------------------------------------------------------------
20529 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 ------------------------------------------------------------------------*/
20531 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20532 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020533 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20534 (eWLAN_PAL_TRUE ==
20535 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20536 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 {
20538 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 return i;
20541 }
20542 }
20543
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020545}/*WDI_FindAssocSession*/
20546
20547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 @brief Helper routine used to find a session based on the BSSID
20549
20550
20551 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 ucBSSIdx: BSS Index of the session
20553 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020554
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020557*/
20558wpt_uint8
20559WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020560(
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 WDI_ControlBlockType* pWDICtx,
20562 wpt_uint16 ucBSSIdx,
20563 WDI_BSSSessionType** ppSession
20564)
20565{
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20568
20569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 -------------------------------------------------------------------------*/
20572 if ( NULL == ppSession )
20573 {
20574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020575 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 }
20578
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020580
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 /*------------------------------------------------------------------------
20582 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 ------------------------------------------------------------------------*/
20584 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20585 {
20586 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20587 {
20588 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 return i;
20591 }
20592 }
20593
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595}/*WDI_FindAssocSessionByBSSIdx*/
20596
20597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 @brief Helper routine used to find a session based on the BSSID
20599
20600
20601 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 ucBSSIdx: BSS Index of the session
20603 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020604
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020606 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020607*/
20608wpt_uint8
20609WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020610(
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_ControlBlockType* pWDICtx,
20612 wpt_uint16 usIdx,
20613 WDI_BSSSessionType** ppSession
20614)
20615{
20616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20617
20618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 -------------------------------------------------------------------------*/
20621 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20622 {
20623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020624 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 }
20627
20628 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020630
20631 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020632
Jeff Johnson295189b2012-06-20 16:38:30 -070020633}/*WDI_FindAssocSessionByBSSIdx*/
20634
20635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
20639
20640 @param pWDICtx: pointer to the WLAN DAL context
20641 pSession: pointer to the session (if found)
20642
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020645*/
20646wpt_uint8
20647WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020648(
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 WDI_ControlBlockType* pWDICtx,
20650 WDI_BSSSessionType** ppSession
20651)
20652{
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 -------------------------------------------------------------------------*/
20658 if ( NULL == ppSession )
20659 {
20660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020661 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 }
20664
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020666
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 /*------------------------------------------------------------------------
20668 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 ------------------------------------------------------------------------*/
20670 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20671 {
20672 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20673 {
20674 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 return i;
20677 }
20678 }
20679
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020681}/*WDI_FindEmptySession*/
20682
20683
20684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020687
20688
20689 @param pWDICtx: pointer to the WLAN DAL context
20690
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 @see
20692 @return Number of sessions in use
20693*/
20694wpt_uint8
20695WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020696(
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 WDI_ControlBlockType* pWDICtx
20698)
20699{
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020702
20703 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 Count all sessions in use
20705 ------------------------------------------------------------------------*/
20706 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20707 {
20708 if ( pWDICtx->aBSSSessions[i].bInUse )
20709 {
20710 ucCount++;
20711 }
20712 }
20713
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020715}/*WDI_GetActiveSessionsCount*/
20716
20717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020720
20721
20722 @param pWDICtx: pointer to the WLAN DAL context
20723 pSession: pointer to the session (if found)
20724
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020727*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020728void
Jeff Johnson295189b2012-06-20 16:38:30 -070020729WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020730(
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 WDI_ControlBlockType* pWDICtx,
20732 WDI_BSSSessionType* ppSession
20733)
20734{
20735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 -------------------------------------------------------------------------*/
20738 if ( NULL == ppSession )
20739 {
20740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020741 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 }
20744
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 /*------------------------------------------------------------------------
20746 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 ------------------------------------------------------------------------*/
20748 wpal_list_destroy(&ppSession->wptPendingQueue);
20749 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20751 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20753 wpal_list_init(&ppSession->wptPendingQueue);
20754
20755}/*WDI_DeleteSession*/
20756
20757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 @param
20761
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 WDI_AddStaParams: - pointer to the WDI Add STA params
20763 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020764
20765 @see
20766 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020767*/
20768void
20769WDI_AddBcastSTAtoSTATable
20770(
20771 WDI_ControlBlockType* pWDICtx,
20772 WDI_AddStaParams * staParams,
20773 wpt_uint16 usBcastStaIdx
20774)
20775{
20776 WDI_AddStaParams wdiAddSTAParam = {0};
20777 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20779
20780 /*---------------------------------------------------------------------
20781 Sanity check
20782 ---------------------------------------------------------------------*/
20783 if ( NULL == staParams )
20784 {
20785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020787
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 }
20790
20791 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20792 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20793 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20794 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20795 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20796 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20797 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20798 WDI_MAC_ADDR_LEN );
20799 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20800 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20801 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20802 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20803 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20804 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20805 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020806
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20808}
20809
20810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 @brief NV blob will be divided into fragments of size 4kb and
20812 Sent to HAL
20813
20814 @param pWDICtx: pointer to the WLAN DAL context
20815 pEventData: pointer to the event information structure
20816
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 @see
20818 @return Result of the function call
20819 */
20820
20821WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020822(
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 WDI_ControlBlockType* pWDICtx,
20824 WDI_EventInfoType* pEventData
20825)
20826{
20827
20828 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20829 wpt_uint8* pSendBuffer = NULL;
20830 wpt_uint16 usDataOffset = 0;
20831 wpt_uint16 usSendSize = 0;
20832 wpt_uint16 usCurrentFragmentSize =0;
20833 wpt_uint8* pSrcBuffer = NULL;
20834 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20835 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20836
20837 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20838 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20839 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20840
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20843
20844 /* Update the current Fragment Number */
20845 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20846
20847 /*Update the HAL REQ structure */
20848 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20849 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20850 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20851
20852 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 image will be sent to HAL*/
20855
Jeff Johnsone7245742012-09-05 17:12:55 -070020856 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20862 usCurrentFragmentSize = FRAGMENT_SIZE;
20863
20864 /*Update the HAL REQ structure */
20865 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20866 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20867
20868 }
20869 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 usCurrentFragmentSize = FRAGMENT_SIZE;
20872
20873 /*Update the HAL REQ structure */
20874 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20875 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20876 }
20877
20878 /*-----------------------------------------------------------------------
20879 Get message buffer
20880 -----------------------------------------------------------------------*/
20881 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20882 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20883 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20886 {
20887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20888 "Unable to get send buffer in NV Download req %x %x ",
20889 pEventData, pwdiNvDownloadReqParams);
20890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 }
20893
20894 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20897
20898 /* Appending the NV image fragment */
20899 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20900 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20901 usCurrentFragmentSize);
20902
20903 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020905
Jeff Johnsone7245742012-09-05 17:12:55 -070020906 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20907 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WDI_NV_DOWNLOAD_RESP);
20909
20910}
Jeff Johnsone7245742012-09-05 17:12:55 -070020911/*============================================================================
20912 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 ============================================================================*/
20914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 @brief Helper routine used to find a session based on the BSSID
20916 @param pContext: pointer to the WLAN DAL context
20917 @param pDPContext: pointer to the Datapath context
20918
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020921*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020922WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020923WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20924{
20925 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20926
20927 pCB->pDPContext = pDPContext;
20928 return;
20929}
20930
20931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 @brief Helper routine used to find a session based on the BSSID
20933
20934
20935 @param pContext: pointer to the WLAN DAL context
20936
Jeff Johnson295189b2012-06-20 16:38:30 -070020937 @see
20938 @return pointer to Datapath context
20939*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020940WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020941WDI_DS_GetDatapathContext (void *pContext)
20942{
20943 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20944 return pCB->pDPContext;
20945}
20946/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 @brief Helper routine used to find a session based on the BSSID
20948
20949
20950 @param pContext: pointer to the WLAN DAL context
20951 @param pDTDriverContext: pointer to the Transport Driver context
20952
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 @see
20954 @return void
20955*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020956WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020957WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20958{
20959 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20960
20961 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963}
20964
20965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020966 @brief Helper routine used to find a session based on the BSSID
20967
20968
20969 @param pWDICtx: pointer to the WLAN DAL context
20970
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020973*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020974WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020975WDT_GetTransportDriverContext (void *pContext)
20976{
20977 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020979}
20980
Jeff Johnsone7245742012-09-05 17:12:55 -070020981/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 Helper inline converters
20983 ============================================================================*/
20984/*Convert WDI driver type into HAL driver type*/
20985WPT_STATIC WPT_INLINE WDI_Status
20986WDI_HAL_2_WDI_STATUS
20987(
20988 eHalStatus halStatus
20989)
20990{
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 the chances of getting inlined*/
20993 switch( halStatus )
20994 {
20995 case eHAL_STATUS_SUCCESS:
20996 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20997 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20998 return WDI_STATUS_SUCCESS;
20999 case eHAL_STATUS_FAILURE:
21000 return WDI_STATUS_E_FAILURE;
21001 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021002 return WDI_STATUS_MEM_FAILURE;
21003 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 default:
21006 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021008
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021010}/*WDI_HAL_2_WDI_STATUS*/
21011
21012/*Convert WDI request type into HAL request type*/
21013WPT_STATIC WPT_INLINE tHalHostMsgType
21014WDI_2_HAL_REQ_TYPE
21015(
21016 WDI_RequestEnumType wdiReqType
21017)
21018{
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 the chances of getting inlined*/
21021 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021054 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 return WLAN_HAL_RMV_STAKEY_REQ;
21058 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021059 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021063 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 case WDI_DEL_BA_REQ:
21067 return WLAN_HAL_DEL_BA_REQ;
21068#ifdef FEATURE_WLAN_CCX
21069 case WDI_TSM_STATS_REQ:
21070 return WLAN_HAL_TSM_STATS_REQ;
21071#endif
21072 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021073 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 case WDI_ADD_BA_SESSION_REQ:
21083 return WLAN_HAL_ADD_BA_SESSION_REQ;
21084 case WDI_TRIGGER_BA_REQ:
21085 return WLAN_HAL_TRIGGER_BA_REQ;
21086 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21091 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21092 case WDI_SET_MAX_TX_POWER_REQ:
21093 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
21094#ifdef WLAN_FEATURE_P2P
21095 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21096 return WLAN_HAL_SET_P2P_GONOA_REQ;
21097#endif
21098 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021103 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021109 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 case WDI_REM_BEACON_FILTER_REQ:
21119 return WLAN_HAL_REM_BCN_FILTER_REQ;
21120 case WDI_SET_RSSI_THRESHOLDS_REQ:
21121 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21122 case WDI_HOST_OFFLOAD_REQ:
21123 return WLAN_HAL_HOST_OFFLOAD_REQ;
21124 case WDI_WOWL_ADD_BC_PTRN_REQ:
21125 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21126 case WDI_WOWL_DEL_BC_PTRN_REQ:
21127 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21128 case WDI_WOWL_ENTER_REQ:
21129 return WLAN_HAL_ENTER_WOWL_REQ;
21130 case WDI_WOWL_EXIT_REQ:
21131 return WLAN_HAL_EXIT_WOWL_REQ;
21132 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21133 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21134 case WDI_NV_DOWNLOAD_REQ:
21135 return WLAN_HAL_DOWNLOAD_NV_REQ;
21136 case WDI_FLUSH_AC_REQ:
21137 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21138 case WDI_BTAMP_EVENT_REQ:
21139 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21140#ifdef WLAN_FEATURE_VOWIFI_11R
21141 case WDI_AGGR_ADD_TS_REQ:
21142 return WLAN_HAL_AGGR_ADD_TS_REQ;
21143#endif /* WLAN_FEATURE_VOWIFI_11R */
21144#ifdef ANI_MANF_DIAG
21145 case WDI_FTM_CMD_REQ:
21146 return WLAN_HAL_PROCESS_PTT_REQ;
21147#endif /* ANI_MANF_DIAG */
21148 case WDI_ADD_STA_SELF_REQ:
21149 return WLAN_HAL_ADD_STA_SELF_REQ;
21150 case WDI_DEL_STA_SELF_REQ:
21151 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021152#ifdef FEATURE_OEM_DATA_SUPPORT
21153 case WDI_START_OEM_DATA_REQ:
21154 return WLAN_HAL_START_OEM_DATA_REQ;
21155#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 case WDI_HOST_RESUME_REQ:
21157 return WLAN_HAL_HOST_RESUME_REQ;
21158 case WDI_HOST_SUSPEND_IND:
21159 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080021160 case WDI_TRAFFIC_STATS_IND:
21161 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021162 case WDI_KEEP_ALIVE_REQ:
21163 return WLAN_HAL_KEEP_ALIVE_REQ;
21164
21165#ifdef FEATURE_WLAN_SCAN_PNO
21166 case WDI_SET_PREF_NETWORK_REQ:
21167 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21168 case WDI_SET_RSSI_FILTER_REQ:
21169 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21170 case WDI_UPDATE_SCAN_PARAMS_REQ:
21171 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21172#endif // FEATURE_WLAN_SCAN_PNO
21173 case WDI_SET_TX_PER_TRACKING_REQ:
21174 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21175#ifdef WLAN_FEATURE_PACKET_FILTERING
21176 case WDI_8023_MULTICAST_LIST_REQ:
21177 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21178 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21181 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21182 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21183 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21184#endif // WLAN_FEATURE_PACKET_FILTERING
21185 case WDI_HAL_DUMP_CMD_REQ:
21186 return WLAN_HAL_DUMP_COMMAND_REQ;
21187#ifdef WLAN_FEATURE_GTK_OFFLOAD
21188 case WDI_GTK_OFFLOAD_REQ:
21189 return WLAN_HAL_GTK_OFFLOAD_REQ;
21190 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21191 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21192#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21193
21194 case WDI_INIT_SCAN_CON_REQ:
21195 return WLAN_HAL_INIT_SCAN_CON_REQ;
21196 case WDI_SET_POWER_PARAMS_REQ:
21197 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21198 case WDI_SET_TM_LEVEL_REQ:
21199 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21200 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21201 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021202#ifdef WLAN_FEATURE_11AC
21203 case WDI_UPDATE_VHT_OP_MODE_REQ:
21204 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21205#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021208 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021209
Jeff Johnson295189b2012-06-20 16:38:30 -070021210}/*WDI_2_HAL_REQ_TYPE*/
21211
21212/*Convert WDI response type into HAL response type*/
21213WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21214HAL_2_WDI_RSP_TYPE
21215(
21216 tHalHostMsgType halMsg
21217)
21218{
Jeff Johnsone7245742012-09-05 17:12:55 -070021219 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 the chances of getting inlined*/
21221 switch( halMsg )
21222 {
21223 case WLAN_HAL_START_RSP:
21224 return WDI_START_RESP;
21225 case WLAN_HAL_STOP_RSP:
21226 return WDI_STOP_RESP;
21227 case WLAN_HAL_INIT_SCAN_RSP:
21228 return WDI_INIT_SCAN_RESP;
21229 case WLAN_HAL_START_SCAN_RSP:
21230 return WDI_START_SCAN_RESP;
21231 case WLAN_HAL_END_SCAN_RSP:
21232 return WDI_END_SCAN_RESP;
21233 case WLAN_HAL_FINISH_SCAN_RSP:
21234 return WDI_FINISH_SCAN_RESP;
21235 case WLAN_HAL_CONFIG_STA_RSP:
21236 return WDI_CONFIG_STA_RESP;
21237 case WLAN_HAL_DELETE_STA_RSP:
21238 return WDI_DEL_STA_RESP;
21239 case WLAN_HAL_CONFIG_BSS_RSP:
21240 return WDI_CONFIG_BSS_RESP;
21241 case WLAN_HAL_DELETE_BSS_RSP:
21242 return WDI_DEL_BSS_RESP;
21243 case WLAN_HAL_JOIN_RSP:
21244 return WDI_JOIN_RESP;
21245 case WLAN_HAL_POST_ASSOC_RSP:
21246 return WDI_POST_ASSOC_RESP;
21247 case WLAN_HAL_SET_BSSKEY_RSP:
21248 return WDI_SET_BSS_KEY_RESP;
21249 case WLAN_HAL_SET_STAKEY_RSP:
21250 return WDI_SET_STA_KEY_RESP;
21251 case WLAN_HAL_RMV_BSSKEY_RSP:
21252 return WDI_RMV_BSS_KEY_RESP;
21253 case WLAN_HAL_RMV_STAKEY_RSP:
21254 return WDI_RMV_STA_KEY_RESP;
21255 case WLAN_HAL_SET_BCASTKEY_RSP:
21256 return WDI_SET_STA_BCAST_KEY_RESP;
21257 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21258 // return WDI_RMV_STA_BCAST_KEY_RESP;
21259 case WLAN_HAL_ADD_TS_RSP:
21260 return WDI_ADD_TS_RESP;
21261 case WLAN_HAL_DEL_TS_RSP:
21262 return WDI_DEL_TS_RESP;
21263 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21264 return WDI_UPD_EDCA_PRMS_RESP;
21265 case WLAN_HAL_ADD_BA_RSP:
21266 return WDI_ADD_BA_RESP;
21267 case WLAN_HAL_DEL_BA_RSP:
21268 return WDI_DEL_BA_RESP;
21269#ifdef FEATURE_WLAN_CCX
21270 case WLAN_HAL_TSM_STATS_RSP:
21271 return WDI_TSM_STATS_RESP;
21272#endif
21273 case WLAN_HAL_CH_SWITCH_RSP:
21274 return WDI_CH_SWITCH_RESP;
21275 case WLAN_HAL_SET_LINK_ST_RSP:
21276 return WDI_SET_LINK_ST_RESP;
21277 case WLAN_HAL_GET_STATS_RSP:
21278 return WDI_GET_STATS_RESP;
21279 case WLAN_HAL_UPDATE_CFG_RSP:
21280 return WDI_UPDATE_CFG_RESP;
21281 case WLAN_HAL_ADD_BA_SESSION_RSP:
21282 return WDI_ADD_BA_SESSION_RESP;
21283 case WLAN_HAL_TRIGGER_BA_RSP:
21284 return WDI_TRIGGER_BA_RESP;
21285 case WLAN_HAL_UPDATE_BEACON_RSP:
21286 return WDI_UPD_BCON_PRMS_RESP;
21287 case WLAN_HAL_SEND_BEACON_RSP:
21288 return WDI_SND_BCON_RESP;
21289 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21290 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21291 /*Indications*/
21292 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21293 return WDI_HAL_RSSI_NOTIFICATION_IND;
21294 case WLAN_HAL_MISSED_BEACON_IND:
21295 return WDI_HAL_MISSED_BEACON_IND;
21296 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21297 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21298 case WLAN_HAL_MIC_FAILURE_IND:
21299 return WDI_HAL_MIC_FAILURE_IND;
21300 case WLAN_HAL_FATAL_ERROR_IND:
21301 return WDI_HAL_FATAL_ERROR_IND;
21302 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21303 return WDI_HAL_DEL_STA_IND;
21304 case WLAN_HAL_COEX_IND:
21305 return WDI_HAL_COEX_IND;
21306 case WLAN_HAL_OTA_TX_COMPL_IND:
21307 return WDI_HAL_TX_COMPLETE_IND;
21308#ifdef WLAN_FEATURE_P2P
21309 case WLAN_HAL_P2P_NOA_ATTR_IND:
21310 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080021311 case WLAN_HAL_P2P_NOA_START_IND:
21312 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021313#endif
21314 case WLAN_HAL_TX_PER_HIT_IND:
21315 return WDI_HAL_TX_PER_HIT_IND;
21316 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21317 return WDI_SET_MAX_TX_POWER_RESP;
21318#ifdef WLAN_FEATURE_P2P
21319 case WLAN_HAL_SET_P2P_GONOA_RSP:
21320 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21321#endif
21322 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021327 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021328 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21341 return WDI_SET_BEACON_FILTER_RESP;
21342 case WLAN_HAL_REM_BCN_FILTER_RSP:
21343 return WDI_REM_BEACON_FILTER_RESP;
21344 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21345 return WDI_SET_RSSI_THRESHOLDS_RESP;
21346 case WLAN_HAL_HOST_OFFLOAD_RSP:
21347 return WDI_HOST_OFFLOAD_RESP;
21348 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21349 return WDI_WOWL_ADD_BC_PTRN_RESP;
21350 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21351 return WDI_WOWL_DEL_BC_PTRN_RESP;
21352 case WLAN_HAL_ENTER_WOWL_RSP:
21353 return WDI_WOWL_ENTER_RESP;
21354 case WLAN_HAL_EXIT_WOWL_RSP:
21355 return WDI_WOWL_EXIT_RESP;
21356 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21357 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21358 case WLAN_HAL_DOWNLOAD_NV_RSP:
21359 return WDI_NV_DOWNLOAD_RESP;
21360 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21361 return WDI_FLUSH_AC_RESP;
21362 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21363 return WDI_BTAMP_EVENT_RESP;
21364#ifdef ANI_MANF_DIAG
21365 case WLAN_HAL_PROCESS_PTT_RSP:
21366 return WDI_FTM_CMD_RESP;
21367#endif /* ANI_MANF_DIAG */
21368 case WLAN_HAL_ADD_STA_SELF_RSP:
21369 return WDI_ADD_STA_SELF_RESP;
21370case WLAN_HAL_DEL_STA_SELF_RSP:
21371 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021372#ifdef FEATURE_OEM_DATA_SUPPORT
21373 case WLAN_HAL_START_OEM_DATA_RSP:
21374 return WDI_START_OEM_DATA_RESP;
21375#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 case WLAN_HAL_HOST_RESUME_RSP:
21377 return WDI_HOST_RESUME_RESP;
21378 case WLAN_HAL_KEEP_ALIVE_RSP:
21379 return WDI_KEEP_ALIVE_RESP;
21380#ifdef FEATURE_WLAN_SCAN_PNO
21381 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21382 return WDI_SET_PREF_NETWORK_RESP;
21383 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21386 return WDI_UPDATE_SCAN_PARAMS_RESP;
21387 case WLAN_HAL_PREF_NETW_FOUND_IND:
21388 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21389#endif // FEATURE_WLAN_SCAN_PNO
21390 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21391 return WDI_SET_TX_PER_TRACKING_RESP;
21392#ifdef WLAN_FEATURE_PACKET_FILTERING
21393 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21394 return WDI_8023_MULTICAST_LIST_RESP;
21395 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21396 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21397 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21398 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21399 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21400 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21401#endif // WLAN_FEATURE_PACKET_FILTERING
21402
21403 case WLAN_HAL_DUMP_COMMAND_RSP:
21404 return WDI_HAL_DUMP_CMD_RESP;
21405 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21406 return WDI_SET_POWER_PARAMS_RESP;
21407#ifdef WLAN_FEATURE_VOWIFI_11R
21408 case WLAN_HAL_AGGR_ADD_TS_RSP:
21409 return WDI_AGGR_ADD_TS_RESP;
21410#endif
21411
21412#ifdef WLAN_FEATURE_GTK_OFFLOAD
21413 case WLAN_HAL_GTK_OFFLOAD_RSP:
21414 return WDI_GTK_OFFLOAD_RESP;
21415 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21416 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21417#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21418#ifdef WLAN_WAKEUP_EVENTS
21419 case WLAN_HAL_WAKE_REASON_IND:
21420 return WDI_HAL_WAKE_REASON_IND;
21421#endif // WLAN_WAKEUP_EVENTS
21422
21423 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21424 return WDI_SET_TM_LEVEL_RESP;
21425 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21426 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021427#ifdef WLAN_FEATURE_11AC
21428 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21429 return WDI_UPDATE_VHT_OP_MODE_RESP;
21430#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021432 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 }
21434
21435}/*HAL_2_WDI_RSP_TYPE*/
21436
21437
21438/*Convert WDI driver type into HAL driver type*/
21439WPT_STATIC WPT_INLINE tDriverType
21440WDI_2_HAL_DRV_TYPE
21441(
21442 WDI_DriverType wdiDriverType
21443)
21444{
Jeff Johnsone7245742012-09-05 17:12:55 -070021445 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 the chances of getting inlined*/
21447 switch( wdiDriverType )
21448 {
21449 case WDI_DRIVER_TYPE_PRODUCTION:
21450 return eDRIVER_TYPE_PRODUCTION;
21451 case WDI_DRIVER_TYPE_MFG:
21452 return eDRIVER_TYPE_MFG;
21453 case WDI_DRIVER_TYPE_DVT:
21454 return eDRIVER_TYPE_DVT;
21455 }
21456
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458}/*WDI_2_HAL_DRV_TYPE*/
21459
21460
21461/*Convert WDI stop reason into HAL stop reason*/
21462WPT_STATIC WPT_INLINE tHalStopType
21463WDI_2_HAL_STOP_REASON
21464(
21465 WDI_StopType wdiDriverType
21466)
21467{
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 the chances of getting inlined*/
21470 switch( wdiDriverType )
21471 {
21472 case WDI_STOP_TYPE_SYS_RESET:
21473 return HAL_STOP_TYPE_SYS_RESET;
21474 case WDI_DRIVER_TYPE_MFG:
21475 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21476 case WDI_STOP_TYPE_RF_KILL:
21477 return HAL_STOP_TYPE_RF_KILL;
21478 }
21479
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481}/*WDI_2_HAL_STOP_REASON*/
21482
21483
21484/*Convert WDI scan mode type into HAL scan mode type*/
21485WPT_STATIC WPT_INLINE eHalSysMode
21486WDI_2_HAL_SCAN_MODE
21487(
21488 WDI_ScanMode wdiScanMode
21489)
21490{
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 the chances of getting inlined*/
21493 switch( wdiScanMode )
21494 {
21495 case WDI_SCAN_MODE_NORMAL:
21496 return eHAL_SYS_MODE_NORMAL;
21497 case WDI_SCAN_MODE_LEARN:
21498 return eHAL_SYS_MODE_LEARN;
21499 case WDI_SCAN_MODE_SCAN:
21500 return eHAL_SYS_MODE_SCAN;
21501 case WDI_SCAN_MODE_PROMISC:
21502 return eHAL_SYS_MODE_PROMISC;
21503 case WDI_SCAN_MODE_SUSPEND_LINK:
21504 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021505 case WDI_SCAN_MODE_ROAM_SCAN:
21506 return eHAL_SYS_MODE_ROAM_SCAN;
21507 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21508 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 }
21510
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021512}/*WDI_2_HAL_SCAN_MODE*/
21513
21514/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021515WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021516WDI_2_HAL_SEC_CH_OFFSET
21517(
21518 WDI_HTSecondaryChannelOffset wdiSecChOffset
21519)
21520{
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 the chances of getting inlined*/
21523 switch( wdiSecChOffset )
21524 {
21525 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21531#ifdef WLAN_FEATURE_11AC
21532 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21533 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21534 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21535 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21536 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21537 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21538 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21539 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21540 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21541 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21542 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21543 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21544 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21545 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21546#endif
21547 default:
21548 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 }
21550
Jeff Johnsone7245742012-09-05 17:12:55 -070021551 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021552}/*WDI_2_HAL_SEC_CH_OFFSET*/
21553
21554/*Convert WDI BSS type into HAL BSS type*/
21555WPT_STATIC WPT_INLINE tSirBssType
21556WDI_2_HAL_BSS_TYPE
21557(
21558 WDI_BssType wdiBSSType
21559)
21560{
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 the chances of getting inlined*/
21563 switch( wdiBSSType )
21564 {
21565 case WDI_INFRASTRUCTURE_MODE:
21566 return eSIR_INFRASTRUCTURE_MODE;
21567 case WDI_INFRA_AP_MODE:
21568 return eSIR_INFRA_AP_MODE;
21569 case WDI_IBSS_MODE:
21570 return eSIR_IBSS_MODE;
21571 case WDI_BTAMP_STA_MODE:
21572 return eSIR_BTAMP_STA_MODE;
21573 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 case WDI_BSS_AUTO_MODE:
21576 return eSIR_AUTO_MODE;
21577 }
21578
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021580}/*WDI_2_HAL_BSS_TYPE*/
21581
21582/*Convert WDI NW type into HAL NW type*/
21583WPT_STATIC WPT_INLINE tSirNwType
21584WDI_2_HAL_NW_TYPE
21585(
21586 WDI_NwType wdiNWType
21587)
21588{
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 the chances of getting inlined*/
21591 switch( wdiNWType )
21592 {
21593 case WDI_11A_NW_TYPE:
21594 return eSIR_11A_NW_TYPE;
21595 case WDI_11B_NW_TYPE:
21596 return eSIR_11B_NW_TYPE;
21597 case WDI_11G_NW_TYPE:
21598 return eSIR_11G_NW_TYPE;
21599 case WDI_11N_NW_TYPE:
21600 return eSIR_11N_NW_TYPE;
21601 }
21602
Jeff Johnsone7245742012-09-05 17:12:55 -070021603 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021604}/*WDI_2_HAL_NW_TYPE*/
21605
21606/*Convert WDI chanel bonding type into HAL cb type*/
21607WPT_STATIC WPT_INLINE ePhyChanBondState
21608WDI_2_HAL_CB_STATE
21609(
21610 WDI_PhyChanBondState wdiCbState
21611)
21612{
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 the chances of getting inlined*/
21615 switch ( wdiCbState )
21616 {
21617 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21618 return PHY_SINGLE_CHANNEL_CENTERED;
21619 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21620 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21621 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21622 return PHY_DOUBLE_CHANNEL_CENTERED;
21623 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21624 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021625#ifdef WLAN_FEATURE_11AC
21626 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21627 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21628 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21629 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21630 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21631 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21632 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21633 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21634 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21635 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21636 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21637 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21638 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21639 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21640#endif
21641 case WDI_MAX_CB_STATE:
21642 default:
21643 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021645
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 return PHY_CHANNEL_BONDING_STATE_MAX;
21647}/*WDI_2_HAL_CB_STATE*/
21648
21649/*Convert WDI chanel bonding type into HAL cb type*/
21650WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21651WDI_2_HAL_HT_OPER_MODE
21652(
21653 WDI_HTOperatingMode wdiHTOperMode
21654)
21655{
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 the chances of getting inlined*/
21658 switch ( wdiHTOperMode )
21659 {
21660 case WDI_HT_OP_MODE_PURE:
21661 return eSIR_HT_OP_MODE_PURE;
21662 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21663 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21664 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21665 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21666 case WDI_HT_OP_MODE_MIXED:
21667 return eSIR_HT_OP_MODE_MIXED;
21668 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021669
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 return eSIR_HT_OP_MODE_MAX;
21671}/*WDI_2_HAL_HT_OPER_MODE*/
21672
21673/*Convert WDI mimo PS type into HAL mimo PS type*/
21674WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21675WDI_2_HAL_MIMO_PS
21676(
21677 WDI_HTMIMOPowerSaveState wdiHTOperMode
21678)
21679{
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 the chances of getting inlined*/
21682 switch ( wdiHTOperMode )
21683 {
21684 case WDI_HT_MIMO_PS_STATIC:
21685 return eSIR_HT_MIMO_PS_STATIC;
21686 case WDI_HT_MIMO_PS_DYNAMIC:
21687 return eSIR_HT_MIMO_PS_DYNAMIC;
21688 case WDI_HT_MIMO_PS_NA:
21689 return eSIR_HT_MIMO_PS_NA;
21690 case WDI_HT_MIMO_PS_NO_LIMIT:
21691 return eSIR_HT_MIMO_PS_NO_LIMIT;
21692 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021693
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 return eSIR_HT_MIMO_PS_MAX;
21695}/*WDI_2_HAL_MIMO_PS*/
21696
21697/*Convert WDI ENC type into HAL ENC type*/
21698WPT_STATIC WPT_INLINE tAniEdType
21699WDI_2_HAL_ENC_TYPE
21700(
21701 WDI_EncryptType wdiEncType
21702)
21703{
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 the chances of getting inlined*/
21706 switch ( wdiEncType )
21707 {
21708 case WDI_ENCR_NONE:
21709 return eSIR_ED_NONE;
21710
21711 case WDI_ENCR_WEP40:
21712 return eSIR_ED_WEP40;
21713
21714 case WDI_ENCR_WEP104:
21715 return eSIR_ED_WEP104;
21716
21717 case WDI_ENCR_TKIP:
21718 return eSIR_ED_TKIP;
21719
21720 case WDI_ENCR_CCMP:
21721 return eSIR_ED_CCMP;
21722
21723 case WDI_ENCR_AES_128_CMAC:
21724 return eSIR_ED_AES_128_CMAC;
21725#if defined(FEATURE_WLAN_WAPI)
21726 case WDI_ENCR_WPI:
21727 return eSIR_ED_WPI;
21728#endif
21729 default:
21730 return eSIR_ED_NOT_IMPLEMENTED;
21731 }
21732
21733}/*WDI_2_HAL_ENC_TYPE*/
21734
21735/*Convert WDI WEP type into HAL WEP type*/
21736WPT_STATIC WPT_INLINE tAniWepType
21737WDI_2_HAL_WEP_TYPE
21738(
21739 WDI_WepType wdiWEPType
21740)
21741{
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 the chances of getting inlined*/
21744 switch ( wdiWEPType )
21745 {
21746 case WDI_WEP_STATIC:
21747 return eSIR_WEP_STATIC;
21748
21749 case WDI_WEP_DYNAMIC:
21750 return eSIR_WEP_DYNAMIC;
21751 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021752
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 return eSIR_WEP_MAX;
21754}/*WDI_2_HAL_WEP_TYPE*/
21755
21756WPT_STATIC WPT_INLINE tSirLinkState
21757WDI_2_HAL_LINK_STATE
21758(
21759 WDI_LinkStateType wdiLinkState
21760)
21761{
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 the chances of getting inlined*/
21764 switch ( wdiLinkState )
21765 {
21766 case WDI_LINK_IDLE_STATE:
21767 return eSIR_LINK_IDLE_STATE;
21768
21769 case WDI_LINK_PREASSOC_STATE:
21770 return eSIR_LINK_PREASSOC_STATE;
21771
21772 case WDI_LINK_POSTASSOC_STATE:
21773 return eSIR_LINK_POSTASSOC_STATE;
21774
21775 case WDI_LINK_AP_STATE:
21776 return eSIR_LINK_AP_STATE;
21777
21778 case WDI_LINK_IBSS_STATE:
21779 return eSIR_LINK_IBSS_STATE;
21780
21781 case WDI_LINK_BTAMP_PREASSOC_STATE:
21782 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21783
21784 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21785 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21786
21787 case WDI_LINK_BTAMP_AP_STATE:
21788 return eSIR_LINK_BTAMP_AP_STATE;
21789
21790 case WDI_LINK_BTAMP_STA_STATE:
21791 return eSIR_LINK_BTAMP_STA_STATE;
21792
21793 case WDI_LINK_LEARN_STATE:
21794 return eSIR_LINK_LEARN_STATE;
21795
21796 case WDI_LINK_SCAN_STATE:
21797 return eSIR_LINK_SCAN_STATE;
21798
21799 case WDI_LINK_FINISH_SCAN_STATE:
21800 return eSIR_LINK_FINISH_SCAN_STATE;
21801
21802 case WDI_LINK_INIT_CAL_STATE:
21803 return eSIR_LINK_INIT_CAL_STATE;
21804
21805 case WDI_LINK_FINISH_CAL_STATE:
21806 return eSIR_LINK_FINISH_CAL_STATE;
21807
21808#ifdef WLAN_FEATURE_P2P
21809 case WDI_LINK_LISTEN_STATE:
21810 return eSIR_LINK_LISTEN_STATE;
21811#endif
21812
21813 default:
21814 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021816}
21817
Jeff Johnsone7245742012-09-05 17:12:55 -070021818/*Translate a STA Context from WDI into HAL*/
21819WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021820void
21821WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021822(
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 tConfigStaParams* phalConfigSta,
21824 WDI_ConfigStaReqInfoType* pwdiConfigSta
21825)
21826{
21827 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828#ifdef WLAN_FEATURE_11AC
21829 /* Get the Version 1 Handler */
21830 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21831 if (WDI_getFwWlanFeatCaps(DOT11AC))
21832 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021833 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 }
21835#endif
21836 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021837 the chances of getting inlined*/
21838
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 wpalMemoryCopy(phalConfigSta->bssId,
21840 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21841
21842 wpalMemoryCopy(phalConfigSta->staMac,
21843 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021844
21845 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21846 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21847 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21848 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21849 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21850 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21851 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21852 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21853 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21854 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21855 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21856 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21857 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21858 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21859 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21860 phalConfigSta->action = pwdiConfigSta->wdiAction;
21861 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21862 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21863 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21864 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21865 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21866 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21867 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021868
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21870
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 pwdiConfigSta->wdiSupportedRates.opRateMode;
21873 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21874 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021876 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21877 }
21878 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21879 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21882 }
21883 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21884 {
21885 phalConfigSta->supportedRates.aniLegacyRates[i] =
21886 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21890 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21891 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21894 }
21895 phalConfigSta->supportedRates.rxHighestDataRate =
21896 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21897
Jeff Johnsone7245742012-09-05 17:12:55 -070021898#ifdef WLAN_FEATURE_11AC
21899 if(phalConfigSta_V1 != NULL)
21900 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021901 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21902 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21903 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21904 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 }
21906#endif
21907
Jeff Johnson295189b2012-06-20 16:38:30 -070021908#ifdef WLAN_FEATURE_P2P
21909 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21910#endif
21911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912#ifdef WLAN_FEATURE_11AC
21913 if(phalConfigSta_V1 != NULL)
21914 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021915 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21916 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080021917 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080021918 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
21919 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
21920
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 }
21922#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021923}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
21925/*Translate a Rate set info from WDI into HAL*/
21926WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021927WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021928(
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 tSirMacRateSet* pHalRateSet,
21930 WDI_RateSet* pwdiRateSet
21931)
21932{
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21935
21936 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21937 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21938
21939 for ( i = 0; i < pHalRateSet->numRates; i++ )
21940 {
21941 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21942 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021943
Jeff Johnson295189b2012-06-20 16:38:30 -070021944}/*WDI_CopyWDIRateSetToHALRateSet*/
21945
21946
21947/*Translate an EDCA Parameter Record from WDI into HAL*/
21948WPT_STATIC WPT_INLINE void
21949WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021950(
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 tSirMacEdcaParamRecord* phalEdcaParam,
21952 WDI_EdcaParamRecord* pWDIEdcaParam
21953)
21954{
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 the chances of getting inlined*/
21957
21958 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21959 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21960 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21961 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21962
21963 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21964 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21965 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21966}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21967
21968
21969/*Copy a management frame header from WDI fmt into HAL fmt*/
21970WPT_STATIC WPT_INLINE void
21971WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21972(
21973 tSirMacMgmtHdr* pmacMgmtHdr,
21974 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21975)
21976{
21977 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21978 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21979 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21980 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21981 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21982 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21983 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21984 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21985 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21986 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21987 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21988
21989 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21990 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21991
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 pwdiMacMgmtHdr->bssId, 6);
21998
21999 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22000 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22001 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22002
22003}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22004
22005
22006/*Copy config bss parameters from WDI fmt into HAL fmt*/
22007WPT_STATIC WPT_INLINE void
22008WDI_CopyWDIConfigBSSToHALConfigBSS
22009(
22010 tConfigBssParams* phalConfigBSS,
22011 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22012)
22013{
22014
22015 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022016#ifdef WLAN_FEATURE_11AC
22017 /* Get the Version 1 Handler */
22018 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22019 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022020 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022021#endif
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 wpalMemoryCopy( phalConfigBSS->bssId,
22024 pwdiConfigBSS->macBSSID,
22025 WDI_MAC_ADDR_LEN);
22026
22027#ifdef HAL_SELF_STA_PER_BSS
22028 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22029 pwdiConfigBSS->macSelfAddr,
22030 WDI_MAC_ADDR_LEN);
22031#endif
22032
22033 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22034
22035 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22036 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22037
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 pwdiConfigBSS->ucShortSlotTimeSupported;
22040 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22041 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22042 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22043 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22044 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22047 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22048 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22049 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22050 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22051 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22052 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22053 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22054 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22055 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22056 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22057
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 phalConfigBSS->htOperMode =
22059 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022060
22061 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22062 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22063 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22064 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22065
22066#ifdef WLAN_FEATURE_VOWIFI
22067 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22068#endif
22069
22070 /*! Used 32 as magic number because that is how the ssid is declared inside the
22071 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22074 pwdiConfigBSS->wdiSSID.ucLength : 32;
22075 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 pwdiConfigBSS->wdiSSID.sSSID,
22077 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022078
22079 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22080 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022081
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22083 &pwdiConfigBSS->wdiRateSet);
22084
22085 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22086
22087 if(phalConfigBSS->edcaParamsValid)
22088 {
22089 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22090 &pwdiConfigBSS->wdiBEEDCAParams);
22091 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22092 &pwdiConfigBSS->wdiBKEDCAParams);
22093 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22094 &pwdiConfigBSS->wdiVIEDCAParams);
22095 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22096 &pwdiConfigBSS->wdiVOEDCAParams);
22097 }
22098
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022100
22101 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22102
22103#ifdef WLAN_FEATURE_VOWIFI_11R
22104
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022107
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 if( phalConfigBSS->extSetStaKeyParamValid )
22109 {
22110 /*-----------------------------------------------------------------------
22111 Copy the STA Key parameters into the HAL message
22112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22115
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22118
22119 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22120
22121 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22122
22123 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22124
22125#ifdef WLAN_SOFTAP_FEATURE
22126 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22127 keyIndex++)
22128 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22131 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22132 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22133 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22134 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22135 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22142 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 WDI_MAX_KEY_LENGTH);
22145 }
22146#else
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
22149 phalConfigBSS->extSetStaKeyParam.key.unicast =
22150 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
22151 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
22152 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
22153 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
22160 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 WDI_MAX_KEY_LENGTH);
22163#endif
22164 }
22165 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22166 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 sizeof(phalConfigBSS->extSetStaKeyParam) );
22169 }
22170
22171#endif /*WLAN_FEATURE_VOWIFI_11R*/
22172
Jeff Johnsone7245742012-09-05 17:12:55 -070022173#ifdef WLAN_FEATURE_11AC
22174 if(phalConfigBSS_V1 != NULL)
22175 {
22176 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22177 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22178 }
22179#endif
22180
Jeff Johnson295189b2012-06-20 16:38:30 -070022181}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22182
22183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 pointed to by user data */
22186WPT_STATIC WPT_INLINE void
22187WDI_ExtractRequestCBFromEvent
22188(
22189 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 void** ppUserData
22192)
22193{
22194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22195 switch ( pEvent->wdiRequest )
22196 {
22197 case WDI_START_REQ:
22198 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22199 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22200 break;
22201 case WDI_STOP_REQ:
22202 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22203 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22204 break;
22205 case WDI_INIT_SCAN_REQ:
22206 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22207 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22208 break;
22209 case WDI_START_SCAN_REQ:
22210 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22211 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22212 break;
22213 case WDI_END_SCAN_REQ:
22214 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22215 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22216 break;
22217 case WDI_FINISH_SCAN_REQ:
22218 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22219 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22220 break;
22221 case WDI_JOIN_REQ:
22222 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22223 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22224 break;
22225 case WDI_CONFIG_BSS_REQ:
22226 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22227 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22228 break;
22229 case WDI_DEL_BSS_REQ:
22230 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22231 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22232 break;
22233 case WDI_POST_ASSOC_REQ:
22234 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22235 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22236 break;
22237 case WDI_DEL_STA_REQ:
22238 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22239 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22240 break;
22241 case WDI_DEL_STA_SELF_REQ:
22242 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22243 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22244 break;
22245
22246 case WDI_SET_BSS_KEY_REQ:
22247 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22248 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22249 break;
22250 case WDI_RMV_BSS_KEY_REQ:
22251 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22252 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22253 break;
22254 case WDI_SET_STA_KEY_REQ:
22255 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22256 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22257 break;
22258 case WDI_RMV_STA_KEY_REQ:
22259 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22260 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22261 break;
22262 case WDI_ADD_TS_REQ:
22263 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22264 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22265 break;
22266 case WDI_DEL_TS_REQ:
22267 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22268 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22269 break;
22270 case WDI_UPD_EDCA_PRMS_REQ:
22271 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22272 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22273 break;
22274 case WDI_ADD_BA_SESSION_REQ:
22275 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22276 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22277 break;
22278 case WDI_DEL_BA_REQ:
22279 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22280 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22281 break;
22282#ifdef FEATURE_WLAN_CCX
22283 case WDI_TSM_STATS_REQ:
22284 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22285 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22286 break;
22287#endif
22288 case WDI_CH_SWITCH_REQ:
22289 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22290 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22291 break;
22292 case WDI_CONFIG_STA_REQ:
22293 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22294 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22295 break;
22296 case WDI_SET_LINK_ST_REQ:
22297 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22298 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22299 break;
22300 case WDI_GET_STATS_REQ:
22301 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22302 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22303 break;
22304 case WDI_UPDATE_CFG_REQ:
22305 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22306 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22307 break;
22308 case WDI_ADD_BA_REQ:
22309 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22310 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22311 break;
22312 case WDI_TRIGGER_BA_REQ:
22313 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22314 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22315 break;
22316 case WDI_UPD_BCON_PRMS_REQ:
22317 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22318 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22319 break;
22320 case WDI_SND_BCON_REQ:
22321 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22322 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22323 break;
22324 case WDI_ENTER_BMPS_REQ:
22325 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22326 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22327 break;
22328 case WDI_EXIT_BMPS_REQ:
22329 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22330 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22331 break;
22332 case WDI_ENTER_UAPSD_REQ:
22333 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22334 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22335 break;
22336 case WDI_UPDATE_UAPSD_PARAM_REQ:
22337 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22338 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22339 break;
22340 case WDI_CONFIGURE_RXP_FILTER_REQ:
22341 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22342 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22343 break;
22344 case WDI_SET_BEACON_FILTER_REQ:
22345 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22346 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22347 break;
22348 case WDI_REM_BEACON_FILTER_REQ:
22349 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22350 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 case WDI_SET_RSSI_THRESHOLDS_REQ:
22353 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22354 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22355 break;
22356 case WDI_HOST_OFFLOAD_REQ:
22357 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22358 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22359 break;
22360 case WDI_WOWL_ADD_BC_PTRN_REQ:
22361 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22362 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22363 break;
22364 case WDI_WOWL_DEL_BC_PTRN_REQ:
22365 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22366 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22367 break;
22368 case WDI_WOWL_ENTER_REQ:
22369 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22370 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22371 break;
22372 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22373 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22374 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22375 break;
22376 case WDI_FLUSH_AC_REQ:
22377 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22378 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22379 break;
22380 case WDI_BTAMP_EVENT_REQ:
22381 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22382 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22383 break;
22384 case WDI_KEEP_ALIVE_REQ:
22385 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22386 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22387 break;
22388 case WDI_SET_TX_PER_TRACKING_REQ:
22389 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22390 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22391 default:
22392 *ppfnReqCB = NULL;
22393 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 }
22396}/*WDI_ExtractRequestCBFromEvent*/
22397
22398
22399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 frame xtl is enabled for a particular STA.
22402
22403 WDI_PostAssocReq must have been called.
22404
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 @param uSTAIdx: STA index
22406
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 @see WDI_PostAssocReq
22408 @return Result of the function call
22409*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022410wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022411WDI_IsHwFrameTxTranslationCapable
22412(
22413 wpt_uint8 uSTAIdx
22414)
22415{
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 uma value*/
22418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 ------------------------------------------------------------------------*/
22421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22422 {
22423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22424 "WDI API call before module is initialized - Fail request");
22425
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 }
22428
Gopichand Nakkala976e3252013-01-03 15:45:56 -080022429#ifdef WLAN_SOFTAP_VSTA_FEATURE
22430 if (IS_VSTA_IDX(uSTAIdx))
22431 {
22432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22433 "STA %d is a Virtual STA, "
22434 "HW frame translation disabled", uSTAIdx);
22435 return eWLAN_PAL_FALSE;
22436 }
22437#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022438
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 return gWDICb.bFrameTransEnabled;
22440}/*WDI_IsHwFrameTxTranslationCapable*/
22441
22442#ifdef FEATURE_WLAN_SCAN_PNO
22443/**
22444 @brief WDI_SetPreferredNetworkList
22445
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022448
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 wdiPNOScanCb: callback for passing back the response
22450 of the Set PNO operation received from the
22451 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022452
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 callback
22455
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 @return Result of the function call
22457*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022458WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022459WDI_SetPreferredNetworkReq
22460(
22461 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22462 WDI_PNOScanCb wdiPNOScanCb,
22463 void* pUserData
22464)
22465{
22466 WDI_EventInfoType wdiEventData = {{0}};
22467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22468
22469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 ------------------------------------------------------------------------*/
22472 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22473 {
22474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22475 "WDI API call before module is initialized - Fail request");
22476
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 }
22479
22480 /*------------------------------------------------------------------------
22481 Fill in Event data and post to the Main FSM
22482 ------------------------------------------------------------------------*/
22483 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 wdiEventData.pUserData = pUserData;
22488
22489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22490}
22491
22492
22493/**
22494 @brief WDI_SetRssiFilterReq
22495
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022498
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 wdiRssiFilterCb: callback for passing back the response
22500 of the Set RSSI Filter operation received from the
22501 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022502
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 callback
22505
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 @return Result of the function call
22507*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022508WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022509WDI_SetRssiFilterReq
22510(
22511 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22512 WDI_RssiFilterCb wdiRssiFilterCb,
22513 void* pUserData
22514)
22515{
22516 WDI_EventInfoType wdiEventData = {{0}};
22517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22518
22519 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 ------------------------------------------------------------------------*/
22522 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22523 {
22524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22525 "WDI API call before module is initialized - Fail request");
22526
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 }
22529
22530 /*------------------------------------------------------------------------
22531 Fill in Event data and post to the Main FSM
22532 ------------------------------------------------------------------------*/
22533 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 wdiEventData.pUserData = pUserData;
22538
22539 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22540}/*WDI_SetRssiFilterReq*/
22541
22542/**
22543 @brief WDI_UpdateScanParamsReq
22544
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022547
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 wdiUpdateScanParamsCb: callback for passing back the response
22549 of the Set PNO operation received from the
22550 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022551
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 callback
22554
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 @return Result of the function call
22556*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022557WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022558WDI_UpdateScanParamsReq
22559(
22560 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22561 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22562 void* pUserData
22563)
22564{
22565 WDI_EventInfoType wdiEventData = {{0}};
22566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22567
22568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 ------------------------------------------------------------------------*/
22571 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22572 {
22573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22574 "WDI API call before module is initialized - Fail request");
22575
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 }
22578
22579 /*------------------------------------------------------------------------
22580 Fill in Event data and post to the Main FSM
22581 ------------------------------------------------------------------------*/
22582 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 wdiEventData.pUserData = pUserData;
22587
22588 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22589}
22590
22591/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022594
22595 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 pwdiPNOScanReqParams: pointer to the info received
22597 from upper layers
22598 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 and its size
22600
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 @return Result of the function call
22602*/
22603
22604WDI_Status
22605WDI_PackPreferredNetworkList
22606(
22607 WDI_ControlBlockType* pWDICtx,
22608 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22609 wpt_uint8** ppSendBuffer,
22610 wpt_uint16* pSize
22611)
22612{
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 wpt_uint16 usDataOffset = 0;
22615 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022616 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 /*-----------------------------------------------------------------------
22619 Get message buffer
22620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022622 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022623 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022624 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 {
22626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22627 "Unable to get send buffer in Set PNO req %x ",
22628 pwdiPNOScanReqParams);
22629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 }
22632
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022633 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22634
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 /*-------------------------------------------------------------------------
22636 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22637 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022638 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022640 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22642
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022643 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22648
22649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22652 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22653 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22654
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022655 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 {
22657 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022658 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22660
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022661 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022663 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022664
22665 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022666 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668
22669 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022670 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022675 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022676 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22677 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22678 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22679 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022681 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022683 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022684
22685 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022686 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22688
22689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022691 pPrefNetwListParams->aNetworks[i].ssId.length,
22692 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 }
22694
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022695 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22698 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22699 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22700
22701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022703 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22705 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22706
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022707 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022708 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022709 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022710 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022711 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22713 }
22714
22715 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022716 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22718 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22719 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022722 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022724 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022725
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022726 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22728 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22729 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022732 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022734 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022735
22736 /*Set the output values*/
22737 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739
22740 return WDI_STATUS_SUCCESS;
22741}/*WDI_PackPreferredNetworkList*/
22742
22743/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022746
22747 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 pwdiPNOScanReqParams: pointer to the info received
22749 from upper layers
22750 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 and its size
22752
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 @return Result of the function call
22754*/
22755
22756WDI_Status
22757WDI_PackPreferredNetworkListNew
22758(
22759 WDI_ControlBlockType* pWDICtx,
22760 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22761 wpt_uint8** ppSendBuffer,
22762 wpt_uint16* pSize
22763)
22764{
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 wpt_uint16 usDataOffset = 0;
22767 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022768 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770
22771 /*-----------------------------------------------------------------------
22772 Get message buffer
22773 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022775 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022777 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 {
22779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22780 "Unable to get send buffer in Set PNO req %x ",
22781 pwdiPNOScanReqParams);
22782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 }
22785
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022786 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22787
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 /*-------------------------------------------------------------------------
22789 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22790 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022791 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022793 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22795
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022796 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022797 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22801
22802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22805 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22806 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22807
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022808 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 {
22810 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022811 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22813
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022814 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022816 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022817
22818 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022819 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022820 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022821
22822 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022823 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825
22826 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022827 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022832 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22834
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022835 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022836 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022837 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022838
22839 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022840 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22842
22843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022845 pPrefNetwListParams->aNetworks[i].ssId.length,
22846 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 }
22848
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022849 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22852 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22853 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22854
22855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022857 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22859 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22860
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022861 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022863 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022865 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22867 }
22868
22869 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022870 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22872 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22873 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022875
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022876 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022878 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022879
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022880 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22882 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22883 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022884 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022885
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022886 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022887 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022888 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022889
Jeff Johnson295189b2012-06-20 16:38:30 -070022890
22891 /*Set the output values*/
22892 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022893 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022894
22895 return WDI_STATUS_SUCCESS;
22896}/*WDI_PackPreferredNetworkListNew*/
22897
22898/**
22899 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022900
22901 @param pWDICtx: pointer to the WLAN DAL context
22902 pEventData: pointer to the event information structure
22903
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 @return Result of the function call
22905*/
22906WDI_Status
22907WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022908(
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 WDI_ControlBlockType* pWDICtx,
22910 WDI_EventInfoType* pEventData
22911)
22912{
22913 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22914 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022918
22919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022921 -------------------------------------------------------------------------*/
22922 if (( NULL == pEventData ) ||
22923 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22924 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22925 {
22926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 }
22931
22932 /*-------------------------------------------------------------------------
22933 Pack the PNO request structure based on version
22934 -------------------------------------------------------------------------*/
22935 if ( pWDICtx->wdiPNOVersion > 0 )
22936 {
22937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022938 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022939 pWDICtx->wdiPNOVersion);
22940
22941 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22942 &pSendBuffer, &usSendSize);
22943 }
22944 else
22945 {
22946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022947 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022948 pWDICtx->wdiPNOVersion);
22949
22950 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22951 &pSendBuffer, &usSendSize);
22952 }
22953
22954 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22955 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22956 {
22957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022958 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022960 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022961 }
22962
22963 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965
22966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022967 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22970 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022971}
22972
22973/**
22974 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022975
22976 @param pWDICtx: pointer to the WLAN DAL context
22977 pEventData: pointer to the event information structure
22978
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 @see
22980 @return Result of the function call
22981*/
22982WDI_Status
22983WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022984(
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 WDI_ControlBlockType* pWDICtx,
22986 WDI_EventInfoType* pEventData
22987)
22988{
22989 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22990 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 wpt_uint16 usDataOffset = 0;
22993 wpt_uint16 usSendSize = 0;
22994 wpt_uint8 ucRssiThreshold;
22995
22996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 -------------------------------------------------------------------------*/
22999 if (( NULL == pEventData ) ||
23000 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23001 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23002 {
23003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 }
23008
23009 /*-----------------------------------------------------------------------
23010 Get message buffer
23011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023013 sizeof(ucRssiThreshold),
23014 &pSendBuffer, &usDataOffset, &usSendSize))||
23015 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23016 {
23017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23018 "Unable to get send buffer in Set PNO req %x %x %x",
23019 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 }
23023
23024 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23025
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 wpalMemoryCopy( pSendBuffer+usDataOffset,
23027 &ucRssiThreshold,
23028 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023029
23030 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023031 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023032
23033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023036 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23037 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023038}
23039
23040
23041/**
23042 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023043
23044 @param pWDICtx: pointer to the WLAN DAL context
23045 pEventData: pointer to the event information structure
23046
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 @see
23048 @return Result of the function call
23049*/
23050WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023051WDI_PackUpdateScanParamsReq
23052(
23053 WDI_ControlBlockType* pWDICtx,
23054 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23055 wpt_uint8** ppSendBuffer,
23056 wpt_uint16* pSize
23057)
23058{
23059 wpt_uint8* pSendBuffer = NULL;
23060 wpt_uint16 usDataOffset = 0;
23061 wpt_uint16 usSendSize = 0;
23062 tUpdateScanParams updateScanParams = {0};
23063
23064
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080023065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023066 "Begin WDI Update Scan Parameters Old Style Params");
23067 /*-----------------------------------------------------------------------
23068 Get message buffer
23069 -----------------------------------------------------------------------*/
23070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23071 sizeof(updateScanParams),
23072 &pSendBuffer, &usDataOffset, &usSendSize))||
23073 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23074 {
23075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23076 "Unable to get send buffer in Update Scan Params req %x",
23077 pwdiUpdateScanParams);
23078 WDI_ASSERT(0);
23079 return WDI_STATUS_E_FAILURE;
23080 }
23081
23082 //
23083 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23084 //
23085
23086 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23087 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23088
23089 updateScanParams.ucChannelCount =
23090 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23091 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23092 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23093 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23094
23095 wpalMemoryCopy( updateScanParams.aChannels,
23096 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23097 updateScanParams.ucChannelCount);
23098
23099
23100 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23101 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23102 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23103 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23104 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23105
23106 wpalMemoryCopy( pSendBuffer+usDataOffset,
23107 &updateScanParams,
23108 sizeof(updateScanParams));
23109
23110 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23111 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23112
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080023113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023114 "End Update Scan Parameters Old Style");
23115
23116 /*Set the output values*/
23117 *ppSendBuffer = pSendBuffer;
23118 *pSize = usSendSize;
23119
23120 return WDI_STATUS_SUCCESS;
23121}
23122
23123/**
23124 @brief Process Update Scan Params function
23125
23126 @param pWDICtx: pointer to the WLAN DAL context
23127 pEventData: pointer to the event information structure
23128
23129 @see
23130 @return Result of the function call
23131*/
23132WDI_Status
23133WDI_PackUpdateScanParamsReqEx
23134(
23135 WDI_ControlBlockType* pWDICtx,
23136 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23137 wpt_uint8** ppSendBuffer,
23138 wpt_uint16* pSize
23139)
23140{
23141 wpt_uint8* pSendBuffer = NULL;
23142 wpt_uint16 usDataOffset = 0;
23143 wpt_uint16 usSendSize = 0;
23144 tUpdateScanParamsEx updateScanParams = {0};
23145
23146
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080023147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023148 "Begin WDI Update Scan Parameters New Style Params");
23149 /*-----------------------------------------------------------------------
23150 Get message buffer
23151 -----------------------------------------------------------------------*/
23152 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23153 sizeof(updateScanParams),
23154 &pSendBuffer, &usDataOffset, &usSendSize))||
23155 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23156 {
23157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23158 "Unable to get send buffer in Update Scan Params Ex req %x",
23159 pwdiUpdateScanParams);
23160 WDI_ASSERT(0);
23161 return WDI_STATUS_E_FAILURE;
23162 }
23163
23164 //
23165 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23166 //
23167
23168 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23169 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23170
23171 updateScanParams.ucChannelCount =
23172 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23173 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23174 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23175 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23176
23177 wpalMemoryCopy( updateScanParams.aChannels,
23178 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23179 updateScanParams.ucChannelCount);
23180
23181
23182 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23183 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23184 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23185 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23186 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23187
23188 wpalMemoryCopy( pSendBuffer+usDataOffset,
23189 &updateScanParams,
23190 sizeof(updateScanParams));
23191
23192 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23193 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23194
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080023195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023196 "End Update Scan Parameters New Style");
23197
23198 /*Set the output values*/
23199 *ppSendBuffer = pSendBuffer;
23200 *pSize = usSendSize;
23201
23202 return WDI_STATUS_SUCCESS;
23203}
23204
23205/**
23206 @brief Process Update Scan Params function
23207
23208 @param pWDICtx: pointer to the WLAN DAL context
23209 pEventData: pointer to the event information structure
23210
23211 @see
23212 @return Result of the function call
23213*/
23214WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023215WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023216(
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 WDI_ControlBlockType* pWDICtx,
23218 WDI_EventInfoType* pEventData
23219)
23220{
23221 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23222 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023225 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226
23227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 -------------------------------------------------------------------------*/
23230 if (( NULL == pEventData ) ||
23231 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23232 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23233 {
23234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 }
23239
23240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23241 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023242
23243 //
23244 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23245 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023246 if ( pWDICtx->wlanVersion.revision < 1 )
23247 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023248 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023249 &pSendBuffer, &usSendSize);
23250 }
23251 else
23252 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080023253 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23254 &pSendBuffer, &usSendSize);
23255 }
23256
23257 if(WDI_STATUS_SUCCESS != wdiStatus)
23258 {
23259 //memory allocation failed
23260 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023261 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023267 wdiUpdateScanParamsCb, pEventData->pUserData,
23268 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023269}
23270
23271/**
23272 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023273
23274 @param pWDICtx: pointer to the WLAN DAL context
23275 pEventData: pointer to the event information structure
23276
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 @see
23278 @return Result of the function call
23279*/
23280WDI_Status
23281WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023282(
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 WDI_ControlBlockType* pWDICtx,
23284 WDI_EventInfoType* pEventData
23285)
23286{
23287 WDI_LowLevelIndType wdiInd;
23288 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23289
23290
23291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 -------------------------------------------------------------------------*/
23294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23295 ( NULL == pEventData->pEventData ))
23296 {
23297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 }
23302
23303 /*-------------------------------------------------------------------------
23304 Extract indication and send it to UMAC
23305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 sizeof(tPrefNetwFoundParams));
23309
23310 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312
23313 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23314
Jeff Johnsone7245742012-09-05 17:12:55 -070023315 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023318
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23320 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23322
23323 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23324 prefNetwFoundInd.prefNetwFoundParams.rssi;
23325
23326 // DEBUG
23327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23328 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23329 wdiInd.wdiIndicationType,
23330 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23331 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23332
ltimariub77f24b2013-01-24 18:54:33 -080023333 if ( pWDICtx->wdiLowLevelIndCB )
23334 {
23335 /*Notify UMAC*/
23336 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23337 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023338
23339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023340}
23341
23342/**
23343 @brief Process PNO Rsp function (called when a
23344 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023345
23346 @param pWDICtx: pointer to the WLAN DAL context
23347 pEventData: pointer to the event information structure
23348
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 @see
23350 @return Result of the function call
23351*/
23352WDI_Status
23353WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023354(
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 WDI_ControlBlockType* pWDICtx,
23356 WDI_EventInfoType* pEventData
23357)
23358{
23359 WDI_Status wdiStatus;
23360 eHalStatus halStatus;
23361 WDI_PNOScanCb wdiPNOScanCb = NULL;
23362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23363
23364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 -------------------------------------------------------------------------*/
23367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23368 ( NULL == pEventData->pEventData ))
23369 {
23370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 }
23375
23376
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378
23379 /*-------------------------------------------------------------------------
23380 Extract response and send it to UMAC
23381 -------------------------------------------------------------------------*/
23382 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023384
23385 /*Notify UMAC*/
23386 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23387
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023389}/*WDI_ProcessSetPreferredNetworkRsp*/
23390
23391/**
23392 @brief Process RSSI Filter Rsp function (called when a
23393 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023394
23395 @param pWDICtx: pointer to the WLAN DAL context
23396 pEventData: pointer to the event information structure
23397
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 @see
23399 @return Result of the function call
23400*/
23401WDI_Status
23402WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023403(
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 WDI_ControlBlockType* pWDICtx,
23405 WDI_EventInfoType* pEventData
23406)
23407{
23408 WDI_Status wdiStatus;
23409 eHalStatus halStatus;
23410 WDI_RssiFilterCb wdiRssiFilterCb;
23411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23412
23413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 -------------------------------------------------------------------------*/
23416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23417 ( NULL == pEventData->pEventData ))
23418 {
23419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 }
23424
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023426
23427 /*-------------------------------------------------------------------------
23428 Extract response and send it to UMAC
23429 -------------------------------------------------------------------------*/
23430 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023431 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023432
23433 /*Notify UMAC*/
23434 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23435
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437}/*WDI_ProcessSetRssiFilterRsp*/
23438
23439/**
23440 @brief Process Update Scan Params Rsp function (called when a
23441 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023442
23443 @param pWDICtx: pointer to the WLAN DAL context
23444 pEventData: pointer to the event information structure
23445
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 @see
23447 @return Result of the function call
23448*/
23449WDI_Status
23450WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023451(
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 WDI_ControlBlockType* pWDICtx,
23453 WDI_EventInfoType* pEventData
23454)
23455{
23456 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23461
23462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 -------------------------------------------------------------------------*/
23465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23466 ( NULL == pEventData->pEventData ))
23467 {
23468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 }
23473
23474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023475 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023476
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023478
23479 /*-------------------------------------------------------------------------
23480 Extract response and send it to UMAC
23481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23483 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 sizeof(halUpdScanParams.status));
23485
23486 uStatus = halUpdScanParams.status;
23487
23488 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023490
23491 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023492 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023493
Jeff Johnsone7245742012-09-05 17:12:55 -070023494 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023495
23496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 halUpdScanParams.status);
23499
23500 /*Notify UMAC*/
23501 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23502
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023504}
23505#endif // FEATURE_WLAN_SCAN_PNO
23506
23507#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023508WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023509WDI_8023MulticastListReq
23510(
23511 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23512 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23513 void* pUserData
23514)
23515{
23516 WDI_EventInfoType wdiEventData;
23517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23518
23519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023520 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023521
23522 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 ------------------------------------------------------------------------*/
23525 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23526 {
23527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23528 "WDI API call before module is initialized - Fail request");
23529
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023531 }
23532
23533 /*------------------------------------------------------------------------
23534 Fill in Event data and post to the Main FSM
23535 ------------------------------------------------------------------------*/
23536 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 wdiEventData.pUserData = pUserData;
23541
23542 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23543}
23544
Jeff Johnsone7245742012-09-05 17:12:55 -070023545WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023546WDI_ReceiveFilterSetFilterReq
23547(
23548 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23549 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23550 void* pUserData
23551)
23552{
23553 WDI_EventInfoType wdiEventData;
23554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23555
23556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023557 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023558
23559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 ------------------------------------------------------------------------*/
23562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23563 {
23564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23565 "WDI API call before module is initialized - Fail request");
23566
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 }
23569
23570 /*------------------------------------------------------------------------
23571 Fill in Event data and post to the Main FSM
23572 ------------------------------------------------------------------------*/
23573 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23575 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23576 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 wdiEventData.pUserData = pUserData;
23580
23581
23582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23583}
23584
Jeff Johnsone7245742012-09-05 17:12:55 -070023585WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023586WDI_FilterMatchCountReq
23587(
23588 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23589 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23590 void* pUserData
23591)
23592{
23593 WDI_EventInfoType wdiEventData;
23594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23595
23596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023597 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023598
23599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023601 ------------------------------------------------------------------------*/
23602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23603 {
23604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23605 "WDI API call before module is initialized - Fail request");
23606
Jeff Johnsone7245742012-09-05 17:12:55 -070023607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 }
23609
23610 /*------------------------------------------------------------------------
23611 Fill in Event data and post to the Main FSM
23612 ------------------------------------------------------------------------*/
23613 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023614 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 wdiEventData.pUserData = pUserData;
23618
23619
23620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23621}
23622
Jeff Johnsone7245742012-09-05 17:12:55 -070023623WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023624WDI_ReceiveFilterClearFilterReq
23625(
23626 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23627 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23628 void* pUserData
23629)
23630{
23631 WDI_EventInfoType wdiEventData;
23632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23633
23634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023635 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023636
23637 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 ------------------------------------------------------------------------*/
23640 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23641 {
23642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23643 "WDI API call before module is initialized - Fail request");
23644
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 }
23647
23648 /*------------------------------------------------------------------------
23649 Fill in Event data and post to the Main FSM
23650 ------------------------------------------------------------------------*/
23651 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023654 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 wdiEventData.pUserData = pUserData;
23656
23657
23658 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23659}
23660
23661/**
23662 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023663
23664 @param pWDICtx: pointer to the WLAN DAL context
23665 pEventData: pointer to the event information structure
23666
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 @see
23668 @return Result of the function call
23669*/
23670WDI_Status
23671WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023672(
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 WDI_ControlBlockType* pWDICtx,
23674 WDI_EventInfoType* pEventData
23675)
23676{
23677 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23678 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 wpt_uint16 usDataOffset = 0;
23681 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023682 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 wpt_uint8 ucCurrentBSSSesIdx = 0;
23685 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023686
23687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023688 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023689
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023690 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23691 if( NULL == pRcvFltMcAddrListType )
23692 {
23693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23694 "Failed to alloc in WDI_Process8023MulticastListReq");
23695 return WDI_STATUS_E_FAILURE;
23696 }
23697
Jeff Johnson295189b2012-06-20 16:38:30 -070023698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 -------------------------------------------------------------------------*/
23701 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023704 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23706 {
23707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023708 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023709 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 return WDI_STATUS_E_FAILURE;
23712 }
23713
23714 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23715 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23716 &pBSSSes);
23717 if ( NULL == pBSSSes )
23718 {
23719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023720 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023721 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 }
23724
23725 /*-----------------------------------------------------------------------
23726 Get message buffer
23727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23729 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023730 sizeof(tHalRcvFltMcAddrListType),
23731 &pSendBuffer, &usDataOffset, &usSendSize))||
23732 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23733 {
23734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23735 "Unable to get send buffer in "
23736 "WDI_Process8023MulticastListReq() %x %x %x",
23737 pEventData, pwdiFltPktSetMcListReqParamsType,
23738 wdi8023MulticastListCb);
23739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 }
23742
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023743 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023745 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023747 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23749 sizeof(tSirMacAddr));
23750 }
23751
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023752 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023754 pRcvFltMcAddrListType,
23755 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023756
23757 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023758 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023759
23760
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023761 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023768}
23769
23770/**
23771 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023772
23773 @param pWDICtx: pointer to the WLAN DAL context
23774 pEventData: pointer to the event information structure
23775
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 @see
23777 @return Result of the function call
23778*/
23779WDI_Status
23780WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023781(
Jeff Johnson295189b2012-06-20 16:38:30 -070023782 WDI_ControlBlockType* pWDICtx,
23783 WDI_EventInfoType* pEventData
23784)
23785{
23786 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23787 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 wpt_uint16 usDataOffset = 0;
23790 wpt_uint16 usSendSize = 0;
23791 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023792 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 wpt_uint8 ucCurrentBSSSesIdx = 0;
23795 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023796 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23797 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023798
23799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023800 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023801
23802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 -------------------------------------------------------------------------*/
23805 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23810 {
23811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023814 return WDI_STATUS_E_FAILURE;
23815 }
23816
23817 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23818 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23819 &pBSSSes);
23820 if ( NULL == pBSSSes )
23821 {
23822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023823 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 }
23826
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023827 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23828 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023829
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023830 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23831 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23832 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23833
23834 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23835 usSessRcvPktFilterCfgSize);
23836
23837 if(NULL == pSessRcvPktFilterCfg)
23838 {
23839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23840 "%s: Failed to allocate memory for "
23841 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023842 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023843 WDI_ASSERT(0);
23844 return WDI_STATUS_E_FAILURE;
23845 }
23846
23847 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23848
23849 /*-----------------------------------------------------------------------
23850 Get message buffer
23851 -----------------------------------------------------------------------*/
23852
23853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23854 usSessRcvPktFilterCfgSize,
23855 &pSendBuffer, &usDataOffset, &usSendSize))||
23856 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23857 {
23858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23859 "Unable to get send buffer in "
23860 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23861 pEventData, pwdiSetRcvPktFilterReqInfo,
23862 wdiReceiveFilterSetFilterCb);
23863 WDI_ASSERT(0);
23864 wpalMemoryFree(pSessRcvPktFilterCfg);
23865 return WDI_STATUS_E_FAILURE;
23866 }
23867
23868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23869 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23870 usSendSize,pSessRcvPktFilterCfg);
23871
23872 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23873 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23874 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23875 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23876
23877 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23878
23879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23880 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23881 pSessRcvPktFilterCfg->filterType);
23882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23883 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23884 pSessRcvPktFilterCfg->coleasceTime);
23885
23886 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23887 {
23888 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23889 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23890 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23891 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23892 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23893 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23894 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23895 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23896
23897 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23898 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23899 8);
23900 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23901 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23902 8);
23903
23904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23905 "Out:Proto %d Comp Flag %d \n",
23906 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23907 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23908
23909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23910 "Data Offset %d Data Len %d\n",
23911 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23912 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23913
23914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23915 "CData: %d:%d:%d:%d:%d:%d\n",
23916 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23917 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23918 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23919 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23920 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23921 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23922
23923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23924 "MData: %d:%d:%d:%d:%d:%d\n",
23925 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23926 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23927 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23928 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23929 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23930 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23931 }
23932
23933 wpalMemoryCopy( pSendBuffer+usDataOffset,
23934 pSessRcvPktFilterCfg,
23935 usSessRcvPktFilterCfgSize);
23936
23937
23938 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23939 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23940
23941 wpalMemoryFree(pSessRcvPktFilterCfg);
23942
23943 }
23944 /*If SLM_SESSIONIZATION is not supported then do this */
23945 else
23946 {
23947 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23948 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23949 * sizeof(tHalRcvPktFilterParams));
23950
23951 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 usRcvPktFilterCfgSize);
23953
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023954 if(NULL == pRcvPktFilterCfg)
23955 {
23956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23957 "%s: Failed to allocate memory for "
23958 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023959 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023960 WDI_ASSERT(0);
23961 return WDI_STATUS_E_FAILURE;
23962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023964 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023966 /*-----------------------------------------------------------------------
23967 Get message buffer
23968 -----------------------------------------------------------------------*/
23969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 usRcvPktFilterCfgSize,
23971 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023972 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23973 {
23974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 "Unable to get send buffer in "
23976 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23977 pEventData, pwdiSetRcvPktFilterReqInfo,
23978 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023979 WDI_ASSERT(0);
23980 wpalMemoryFree(pRcvPktFilterCfg);
23981 return WDI_STATUS_E_FAILURE;
23982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023983
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 usSendSize,usRcvPktFilterCfgSize);
23987
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023988 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23989 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23990 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23991 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023992
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024000 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24001 {
24002 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24003 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24004 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24005 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24006 pRcvPktFilterCfg->paramsData[i].dataOffset =
24007 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24008 pRcvPktFilterCfg->paramsData[i].dataLength =
24009 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024010
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024011 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24013 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024014 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24016 8);
24017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24022
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24024 "Data Offset %d Data Len %d\n",
24025 pRcvPktFilterCfg->paramsData[i].dataOffset,
24026 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24029 "CData: %d:%d:%d:%d:%d:%d\n",
24030 pRcvPktFilterCfg->paramsData[i].compareData[0],
24031 pRcvPktFilterCfg->paramsData[i].compareData[1],
24032 pRcvPktFilterCfg->paramsData[i].compareData[2],
24033 pRcvPktFilterCfg->paramsData[i].compareData[3],
24034 pRcvPktFilterCfg->paramsData[i].compareData[4],
24035 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24038 "MData: %d:%d:%d:%d:%d:%d\n",
24039 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24040 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24041 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24042 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24043 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24044 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24045 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024047 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 pRcvPktFilterCfg,
24049 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024050
24051
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024052 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24053 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024056 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024057 wpalMemoryFree(pRcvPktFilterCfg);
24058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024060 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024064 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024065}
24066
24067/**
24068 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024069
24070 @param pWDICtx: pointer to the WLAN DAL context
24071 pEventData: pointer to the event information structure
24072
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 @see
24074 @return Result of the function call
24075*/
24076WDI_Status
24077WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024078(
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 WDI_ControlBlockType* pWDICtx,
24080 WDI_EventInfoType* pEventData
24081)
24082{
24083 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24084 NULL;
24085 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24086 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 wpt_uint16 usDataOffset = 0;
24089 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024090 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24091 wpt_uint8 ucCurrentBSSSesIdx = 0;
24092 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024093
24094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024095 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024096
24097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024099 -------------------------------------------------------------------------*/
24100 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24105 {
24106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 }
24111
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024112 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24113 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24114 &pBSSSes);
24115 if ( NULL == pBSSSes )
24116 {
24117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024118 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024119 return WDI_STATUS_E_FAILURE;
24120 }
24121
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 /*-----------------------------------------------------------------------
24123 Get message buffer
24124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24126 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024127 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024129 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 {
24131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24132 "Unable to get send buffer in "
24133 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24134 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24135 wdiFilterMatchCountCb);
24136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 }
24139
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024140 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24141 wpalMemoryCopy( pSendBuffer+usDataOffset,
24142 &rcvFltPktMatchCntReqParam,
24143 sizeof(rcvFltPktMatchCntReqParam));
24144
Jeff Johnson295189b2012-06-20 16:38:30 -070024145 //
24146 // Don't need to fill send buffer other than header
24147 //
24148 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024150
24151
24152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24156 wdiFilterMatchCountCb,
24157 pEventData->pUserData,
24158 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024159}
24160
24161/**
24162 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024163
24164 @param pWDICtx: pointer to the WLAN DAL context
24165 pEventData: pointer to the event information structure
24166
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 @see
24168 @return Result of the function call
24169*/
24170WDI_Status
24171WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024172(
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 WDI_ControlBlockType* pWDICtx,
24174 WDI_EventInfoType* pEventData
24175)
Jeff Johnsone7245742012-09-05 17:12:55 -070024176{
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24178 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 wpt_uint16 usDataOffset = 0;
24181 wpt_uint16 usSendSize = 0;
24182 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024183 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024185
24186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024187 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024188
24189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 -------------------------------------------------------------------------*/
24192 if (( NULL == pEventData ) ||
24193 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24194 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24197 {
24198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 return WDI_STATUS_E_FAILURE;
24202 }
24203
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024204 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024205 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24206 &pBSSSes);
24207 if ( NULL == pBSSSes )
24208 {
24209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024210 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 }
24213
24214 /*-----------------------------------------------------------------------
24215 Get message buffer
24216 -----------------------------------------------------------------------*/
24217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 sizeof(tHalRcvFltPktClearParam),
24220 &pSendBuffer, &usDataOffset, &usSendSize))||
24221 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24222 {
24223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24224 "Unable to get send buffer in "
24225 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24226 pEventData, pwdiRcvFltPktClearReqParamsType,
24227 wdiRcvFltPktClearFilterCb);
24228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 }
24231
24232
24233 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024234 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024236 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024237
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24239 wpalMemoryCopy( pSendBuffer+usDataOffset,
24240 &rcvFltPktClearParam,
24241 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024242
24243 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024244 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024245
24246
24247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024251 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024253}
24254
24255/**
24256 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024257
24258 @param pWDICtx: pointer to the WLAN DAL context
24259 pEventData: pointer to the event information structure
24260
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 @see
24262 @return Result of the function call
24263*/
24264WDI_Status
24265WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024266(
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 WDI_ControlBlockType* pWDICtx,
24268 WDI_EventInfoType* pEventData
24269)
24270{
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 eHalStatus halStatus;
24272 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024273 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24274 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24276
24277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024278 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024279
24280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 -------------------------------------------------------------------------*/
24283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24284 ( NULL == pEventData->pEventData ))
24285 {
24286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 }
24291
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024293
24294 /*-------------------------------------------------------------------------
24295 Extract response and send it to UMAC
24296 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024297 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24298 {
24299 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24300 pEventData->pEventData,
24301 sizeof(halRcvFltPktSetMcListRsp));
24302
24303 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24304 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24305 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24306 halRcvFltPktSetMcListRsp.bssIdx;
24307 }
24308 else
24309 {
24310 halStatus = *((eHalStatus*)pEventData->pEventData);
24311 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024313
24314 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024315 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024316
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318}
24319
24320/**
24321 @brief Process Set Rsp function (called when a
24322 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024323
24324 @param pWDICtx: pointer to the WLAN DAL context
24325 pEventData: pointer to the event information structure
24326
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 @see
24328 @return Result of the function call
24329*/
24330WDI_Status
24331WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024332(
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 WDI_ControlBlockType* pWDICtx,
24334 WDI_EventInfoType* pEventData
24335)
24336{
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 eHalStatus halStatus;
24338 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024339 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24340 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24342
24343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024344 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024345
24346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 -------------------------------------------------------------------------*/
24349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24350 ( NULL == pEventData->pEventData ))
24351 {
24352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024356 }
24357
24358 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024359 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024360
24361 /*-------------------------------------------------------------------------
24362 Extract response and send it to UMAC
24363 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024364 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24365 {
24366 wpalMemoryCopy( &halSetPktFilterRspParams,
24367 pEventData->pEventData,
24368 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024369
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024370 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24371 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24372 }
24373 else
24374 {
24375 halStatus = *((eHalStatus*)pEventData->pEventData);
24376 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24377 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024379 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024380
Jeff Johnsone7245742012-09-05 17:12:55 -070024381 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382}
24383
24384/**
24385 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024386
24387 @param pWDICtx: pointer to the WLAN DAL context
24388 pEventData: pointer to the event information structure
24389
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 @see
24391 @return Result of the function call
24392*/
24393WDI_Status
24394WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024395(
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 WDI_ControlBlockType* pWDICtx,
24397 WDI_EventInfoType* pEventData
24398)
24399{
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024402 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24403 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404
24405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24406
24407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024408 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024409
24410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 -------------------------------------------------------------------------*/
24413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24414 ( NULL == pEventData->pEventData ))
24415 {
24416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 }
24421
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423
24424 /*-------------------------------------------------------------------------
24425 Extract response and send it to UMAC
24426 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24428 {
24429 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24430 pEventData->pEventData,
24431 sizeof(halRcvFltrPktMatachRsp));
24432
24433 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24434 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24435 }
24436 else
24437 {
24438 halStatus = *((eHalStatus*)pEventData->pEventData);
24439 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24440 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024441
24442 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024443 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024444
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024446}
24447
24448/**
24449 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024450
24451 @param pWDICtx: pointer to the WLAN DAL context
24452 pEventData: pointer to the event information structure
24453
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 @see
24455 @return Result of the function call
24456*/
24457WDI_Status
24458WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024459(
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 WDI_ControlBlockType* pWDICtx,
24461 WDI_EventInfoType* pEventData
24462)
24463{
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 eHalStatus halStatus;
24465 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024466 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24467 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24469
24470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024471 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024472
24473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 -------------------------------------------------------------------------*/
24476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24477 ( NULL == pEventData->pEventData ))
24478 {
24479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 }
24484
24485 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024487
24488 /*-------------------------------------------------------------------------
24489 Extract response and send it to UMAC
24490 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024491 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24492 {
24493 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24494 pEventData->pEventData,
24495 sizeof(halRcvFltPktClearRspMsg));
24496
24497 wdiRcvFltPktClearRspParamsType.wdiStatus =
24498 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24499 wdiRcvFltPktClearRspParamsType.bssIdx =
24500 halRcvFltPktClearRspMsg.bssIdx;
24501 }
24502 else
24503 {
24504 halStatus = *((eHalStatus*)pEventData->pEventData);
24505 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024507
24508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024509 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024510
Jeff Johnsone7245742012-09-05 17:12:55 -070024511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024512}
24513#endif // WLAN_FEATURE_PACKET_FILTERING
24514
24515/**
24516 @brief Process Shutdown Rsp function
24517 There is no shutdown response comming from HAL
24518 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024519
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024521 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024522
24523 @see
24524 @return Result of the function call
24525*/
24526WDI_Status
24527WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024528(
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 WDI_ControlBlockType* pWDICtx,
24530 WDI_EventInfoType* pEventData
24531)
24532{
24533 /*There is no shutdown response comming from HAL - function just kept for
24534 simmetry */
24535 WDI_ASSERT(0);
24536 return WDI_STATUS_SUCCESS;
24537}/*WDI_ProcessShutdownRsp*/
24538
24539/**
24540 @brief WDI_SetPowerParamsReq
24541
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024544
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 wdiPowerParamsCb: callback for passing back the response
24546 of the Set Power Params operation received from the
24547 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024548
Jeff Johnson295189b2012-06-20 16:38:30 -070024549 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 callback
24551
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 @return Result of the function call
24553*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024555WDI_SetPowerParamsReq
24556(
24557 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24558 WDI_SetPowerParamsCb wdiPowerParamsCb,
24559 void* pUserData
24560)
24561{
24562 WDI_EventInfoType wdiEventData;
24563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24564
24565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 ------------------------------------------------------------------------*/
24568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24569 {
24570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24571 "WDI API call before module is initialized - Fail request");
24572
Jeff Johnsone7245742012-09-05 17:12:55 -070024573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024574 }
24575
24576 /*------------------------------------------------------------------------
24577 Fill in Event data and post to the Main FSM
24578 ------------------------------------------------------------------------*/
24579 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 wdiEventData.pUserData = pUserData;
24584
24585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24586}/*WDI_SetPowerParamsReq*/
24587
24588/**
24589 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024590
24591 @param pWDICtx: pointer to the WLAN DAL context
24592 pEventData: pointer to the event information structure
24593
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 @see
24595 @return Result of the function call
24596*/
24597WDI_Status
24598WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024599(
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 WDI_ControlBlockType* pWDICtx,
24601 WDI_EventInfoType* pEventData
24602)
24603{
24604 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24605 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024606 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 wpt_uint16 usDataOffset = 0;
24608 wpt_uint16 usSendSize = 0;
24609 tSetPowerParamsType powerParams;
24610
24611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 -------------------------------------------------------------------------*/
24614 if (( NULL == pEventData ) ||
24615 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24616 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24617 {
24618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 }
24623
24624 /*-----------------------------------------------------------------------
24625 Get message buffer
24626 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 sizeof(powerParams),
24629 &pSendBuffer, &usDataOffset, &usSendSize))||
24630 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24631 {
24632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24633 "Unable to get send buffer in Set PNO req %x %x %x",
24634 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 }
24638
24639 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24642
24643 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24646
24647 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24650
24651 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24654
24655 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024656 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24658
24659 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 powerParams.uBETInterval =
24661 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024662
Jeff Johnsone7245742012-09-05 17:12:55 -070024663
24664 wpalMemoryCopy( pSendBuffer+usDataOffset,
24665 &powerParams,
24666 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024667
24668 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024670
24671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24675 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024676}
24677
24678/**
24679 @brief Process Power Params Rsp function (called when a
24680 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024681
24682 @param pWDICtx: pointer to the WLAN DAL context
24683 pEventData: pointer to the event information structure
24684
Jeff Johnson295189b2012-06-20 16:38:30 -070024685 @see
24686 @return Result of the function call
24687*/
24688WDI_Status
24689WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024690(
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 WDI_ControlBlockType* pWDICtx,
24692 WDI_EventInfoType* pEventData
24693)
24694{
24695 WDI_Status wdiStatus;
24696 eHalStatus halStatus;
24697 WDI_SetPowerParamsCb wdiPowerParamsCb;
24698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24699
24700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 -------------------------------------------------------------------------*/
24703 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24704 ( NULL == pEventData->pEventData ))
24705 {
24706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 }
24711
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024713
24714 /*-------------------------------------------------------------------------
24715 Extract response and send it to UMAC
24716 -------------------------------------------------------------------------*/
24717 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024719
24720 /*Notify UMAC*/
24721 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24722
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724}/*WDI_ProcessSetPowerParamsRsp*/
24725
24726#ifdef WLAN_FEATURE_GTK_OFFLOAD
24727/**
24728 @brief WDI_GTKOffloadReq will be called when the upper MAC
24729 wants to set GTK Rekey Counter while in power save. Upon
24730 the call of this API the WLAN DAL will pack and send a
24731 HAL GTK offload request message to the lower RIVA
24732 sub-system if DAL is in state STARTED.
24733
24734 In state BUSY this request will be queued. Request won't
24735 be allowed in any other state.
24736
24737 WDI_PostAssocReq must have been called.
24738
24739 @param pwdiGtkOffloadParams: the GTK offload as specified
24740 by the Device Interface
24741
24742 wdiGtkOffloadCb: callback for passing back the response
24743 of the GTK offload operation received from the device
24744
24745 pUserData: user data will be passed back with the
24746 callback
24747
24748 @see WDI_PostAssocReq
24749 @return Result of the function call
24750*/
24751WDI_Status
24752WDI_GTKOffloadReq
24753(
24754 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24755 WDI_GtkOffloadCb wdiGtkOffloadCb,
24756 void* pUserData
24757)
24758{
24759 WDI_EventInfoType wdiEventData = {0};
24760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24761
24762 /*------------------------------------------------------------------------
24763 Sanity Check
24764 ------------------------------------------------------------------------*/
24765 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24766 {
24767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24768 "WDI API call before module is initialized - Fail request");
24769
24770 return WDI_STATUS_E_NOT_ALLOWED;
24771 }
24772
24773 /*------------------------------------------------------------------------
24774 Fill in Event data and post to the Main FSM
24775 ------------------------------------------------------------------------*/
24776 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24777 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024778 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24780 wdiEventData.pUserData = pUserData;
24781
24782 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24783}
24784
24785
24786/**
24787 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24788 MAC wants to get GTK Rekey Counter while in power save.
24789 Upon the call of this API the WLAN DAL will pack and
24790 send a HAL GTK offload request message to the lower RIVA
24791 sub-system if DAL is in state STARTED.
24792
24793 In state BUSY this request will be queued. Request won't
24794 be allowed in any other state.
24795
24796 WDI_PostAssocReq must have been called.
24797
24798 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24799 Information Message as specified by the
24800 Device Interface
24801
24802 wdiGtkOffloadGetInfoCb: callback for passing back the
24803 response of the GTK offload operation received from the
24804 device
24805
24806 pUserData: user data will be passed back with the
24807 callback
24808
24809 @see WDI_PostAssocReq
24810 @return Result of the function call
24811*/
24812WDI_Status
24813WDI_GTKOffloadGetInfoReq
24814(
24815 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24816 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24817 void* pUserData
24818)
24819{
24820 WDI_EventInfoType wdiEventData = {0};
24821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24822
24823 /*------------------------------------------------------------------------
24824 Sanity Check
24825 ------------------------------------------------------------------------*/
24826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24827 {
24828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24829 "WDI API call before module is initialized - Fail request");
24830
24831 return WDI_STATUS_E_NOT_ALLOWED;
24832 }
24833
24834 /*------------------------------------------------------------------------
24835 Fill in Event data and post to the Main FSM
24836 ------------------------------------------------------------------------*/
24837 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24838 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24839 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24840 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24841 wdiEventData.pUserData = pUserData;
24842
24843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24844}
24845
24846
24847/**
24848 @brief Process set GTK Offload Request function
24849
24850 @param pWDICtx: pointer to the WLAN DAL context
24851 pEventData: pointer to the event information structure
24852
24853 @see
24854 @return Result of the function call
24855*/
24856WDI_Status
24857WDI_ProcessGTKOffloadReq
24858(
24859 WDI_ControlBlockType* pWDICtx,
24860 WDI_EventInfoType* pEventData
24861)
24862{
24863 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24864 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24865 wpt_uint8* pSendBuffer = NULL;
24866 wpt_uint16 usDataOffset = 0;
24867 wpt_uint16 usSendSize = 0;
24868 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024869 wpt_uint8 ucCurrentSessionId = 0;
24870 WDI_BSSSessionType* pBSSSes = NULL;
24871
Jeff Johnson295189b2012-06-20 16:38:30 -070024872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24873
24874 /*-------------------------------------------------------------------------
24875 Sanity check
24876 -------------------------------------------------------------------------*/
24877 if (( NULL == pEventData ) ||
24878 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24879 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24880 {
24881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 WDI_ASSERT(0);
24884 return WDI_STATUS_E_FAILURE;
24885 }
24886
24887 /*-----------------------------------------------------------------------
24888 Get message buffer
24889 -----------------------------------------------------------------------*/
24890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24891 sizeof(gtkOffloadReqParams),
24892 &pSendBuffer, &usDataOffset, &usSendSize))||
24893 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24894 {
24895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24896 "Unable to get send buffer in GTK offload req %x %x %x",
24897 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24898 WDI_ASSERT(0);
24899 return WDI_STATUS_E_FAILURE;
24900 }
24901
24902 //
24903 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24904 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024905 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24906 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24907 &pBSSSes);
24908 if ( NULL == pBSSSes )
24909 {
24910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024911 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024912 return WDI_STATUS_E_FAILURE;
24913 }
24914
24915 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24916
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24918 // Copy KCK
24919 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24920 // Copy KEK
24921 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24922 // Copy KeyReplayCounter
24923 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24924
24925 wpalMemoryCopy( pSendBuffer+usDataOffset,
24926 &gtkOffloadReqParams,
24927 sizeof(gtkOffloadReqParams));
24928
24929 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24930 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24931
24932 /*-------------------------------------------------------------------------
24933 Send Get STA Request to HAL
24934 -------------------------------------------------------------------------*/
24935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24936 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24937}
24938
24939
24940/**
24941 @brief Process GTK Offload Get Information Request function
24942
24943 @param pWDICtx: pointer to the WLAN DAL context
24944 pEventData: pointer to the event information structure
24945
24946 @see
24947 @return Result of the function call
24948*/
24949WDI_Status
24950WDI_ProcessGTKOffloadGetInfoReq
24951(
24952 WDI_ControlBlockType* pWDICtx,
24953 WDI_EventInfoType* pEventData
24954)
24955{
24956 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24957 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24958 wpt_uint8* pSendBuffer = NULL;
24959 wpt_uint16 usDataOffset = 0;
24960 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024961 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24962 wpt_uint8 ucCurrentSessionId = 0;
24963 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024964
24965 /*-------------------------------------------------------------------------
24966 Sanity check
24967 -------------------------------------------------------------------------*/
24968 if (( NULL == pEventData ) ||
24969 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24970 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24971 {
24972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 WDI_ASSERT(0);
24975 return WDI_STATUS_E_FAILURE;
24976 }
24977
24978 /*-----------------------------------------------------------------------
24979 Get message buffer
24980 -----------------------------------------------------------------------*/
24981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024982 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024984 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 {
24986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24987 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24988 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24989 WDI_ASSERT(0);
24990 return WDI_STATUS_E_FAILURE;
24991 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024992 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24993 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24994 &pBSSSes);
24995 if ( NULL == pBSSSes )
24996 {
24997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024998 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024999 return WDI_STATUS_E_FAILURE;
25000 }
25001 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025002
25003 //
25004 // Don't need to fill send buffer other than header
25005 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025006 wpalMemoryCopy( pSendBuffer+usDataOffset,
25007 &halGtkOffloadGetInfoReqParams,
25008 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025009
25010 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25011 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25012
25013 /*-------------------------------------------------------------------------
25014 Send Get STA Request to HAL
25015 -------------------------------------------------------------------------*/
25016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25017 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
25018}
25019
25020/**
25021 @brief Process host offload Rsp function (called when a
25022 response is being received over the bus from HAL)
25023
25024 @param pWDICtx: pointer to the WLAN DAL context
25025 pEventData: pointer to the event information structure
25026
25027 @see
25028 @return Result of the function call
25029*/
25030WDI_Status
25031WDI_ProcessGtkOffloadRsp
25032(
25033 WDI_ControlBlockType* pWDICtx,
25034 WDI_EventInfoType* pEventData
25035)
25036{
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 eHalStatus halStatus;
25038 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025039 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25040 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25042
25043 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25044
25045 /*-------------------------------------------------------------------------
25046 Sanity check
25047 -------------------------------------------------------------------------*/
25048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25049 ( NULL == pEventData->pEventData))
25050 {
25051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 WDI_ASSERT(0);
25054 return WDI_STATUS_E_FAILURE;
25055 }
25056
25057 /*-------------------------------------------------------------------------
25058 Extract response and send it to UMAC
25059 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025060 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25061 {
25062 wpalMemoryCopy( &halGtkOffloadRspParams,
25063 pEventData->pEventData,
25064 sizeof(halGtkOffloadRspParams));
25065
25066 wdiGtkOffloadRsparams.ulStatus =
25067 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25068 wdiGtkOffloadRsparams.bssIdx =
25069 halGtkOffloadRspParams.bssIdx;
25070 }
25071 else
25072 {
25073 halStatus = *((eHalStatus*)pEventData->pEventData);
25074 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25075 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025076
25077 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025078 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025079
25080 return WDI_STATUS_SUCCESS;
25081}
25082
25083/**
25084 @brief Process GTK Offload Get Information Response function
25085
25086 @param pWDICtx: pointer to the WLAN DAL context
25087 pEventData: pointer to the event information structure
25088
25089 @see
25090 @return Result of the function call
25091*/
25092WDI_Status
25093WDI_ProcessGTKOffloadGetInfoRsp
25094(
25095 WDI_ControlBlockType* pWDICtx,
25096 WDI_EventInfoType* pEventData
25097)
25098{
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025101 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25102 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025103
25104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25105
25106 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25107
25108 /*-------------------------------------------------------------------------
25109 Sanity check
25110 -------------------------------------------------------------------------*/
25111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25112 ( NULL == pEventData->pEventData ))
25113 {
25114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 WDI_ASSERT(0);
25117 return WDI_STATUS_E_FAILURE;
25118 }
25119
25120 /*-------------------------------------------------------------------------
25121 Extract response and send it to UMAC
25122 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025123 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25124 {
25125 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25126 pEventData->pEventData,
25127 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025128
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025129 wdiGtkOffloadGetInfoRsparams.ulStatus =
25130 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25131 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25132 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25133 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25134 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25135 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25136 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25137 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25138 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25139 wdiGtkOffloadGetInfoRsparams.bssIdx =
25140 halGtkOffloadGetInfoRspParams.bssIdx;
25141 }
25142 else
25143 {
25144 halStatus = *((eHalStatus*)pEventData->pEventData);
25145 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25146 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025147 /*Notify UMAC*/
25148 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25149 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025150 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025151
25152 return WDI_STATUS_SUCCESS;
25153}
25154#endif // WLAN_FEATURE_GTK_OFFLOAD
25155
25156#ifdef WLAN_WAKEUP_EVENTS
25157WDI_Status
25158WDI_ProcessWakeReasonInd
25159(
25160 WDI_ControlBlockType* pWDICtx,
25161 WDI_EventInfoType* pEventData
25162)
25163{
25164 WDI_LowLevelIndType *pWdiInd;
25165 tpWakeReasonParams pWakeReasonParams;
25166 wpt_uint32 allocSize = 0;
25167
25168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025169 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025170
25171 /*-------------------------------------------------------------------------
25172 Sanity check
25173 -------------------------------------------------------------------------*/
25174 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25175 ( NULL == pEventData->pEventData ))
25176 {
25177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025179 WDI_ASSERT( 0 );
25180 return WDI_STATUS_E_FAILURE;
25181 }
25182
25183 /*-------------------------------------------------------------------------
25184 Extract indication and send it to UMAC
25185 -------------------------------------------------------------------------*/
25186 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25187
25188 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25189
25190 //Allocate memory for WDI_WakeReasonIndType structure
25191 pWdiInd = wpalMemoryAllocate(allocSize) ;
25192
25193 if(NULL == pWdiInd)
25194 {
25195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25196 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025197 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 WDI_ASSERT(0);
25199 return WDI_STATUS_E_FAILURE;
25200 }
25201
25202 wpalMemoryZero(pWdiInd, allocSize);
25203
25204 /* Fill in the indication parameters*/
25205 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25206 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25207 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25208 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25209 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25210 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25211 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25212 &(pWakeReasonParams->aDataStart[0]),
25213 pWakeReasonParams->ulStoredDataLen);
25214
ltimariub77f24b2013-01-24 18:54:33 -080025215
25216 if ( pWDICtx->wdiLowLevelIndCB )
25217 {
25218 /*Notify UMAC*/
25219 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025221
25222 //Free memory allocated for WDI_WakeReasonIndType structure
25223 wpalMemoryFree(pWdiInd);
25224
25225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025226 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025227
25228 return WDI_STATUS_SUCCESS;
25229}
25230#endif // WLAN_WAKEUP_EVENTS
25231
25232void WDI_GetWcnssCompiledApiVersion
25233(
25234 WDI_WlanVersionType *pWcnssApiVersion
25235)
25236{
25237 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25238 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25239 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25240 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25241}
25242
25243/**
25244 @brief Process Set TM Level Rsp function (called when a
25245 response is being received over the bus from HAL)
25246
25247 @param pWDICtx: pointer to the WLAN DAL context
25248 pEventData: pointer to the event information structure
25249
25250 @see
25251 @return Result of the function call
25252*/
25253WDI_Status
25254WDI_ProcessSetTmLevelRsp
25255(
25256 WDI_ControlBlockType* pWDICtx,
25257 WDI_EventInfoType* pEventData
25258)
25259{
25260 WDI_Status wdiStatus;
25261 eHalStatus halStatus;
25262 WDI_SetTmLevelCb wdiSetTmLevelCb;
25263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25264
25265 /*-------------------------------------------------------------------------
25266 Sanity check
25267 -------------------------------------------------------------------------*/
25268 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25269 ( NULL == pEventData->pEventData ))
25270 {
25271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025273 WDI_ASSERT(0);
25274 return WDI_STATUS_E_FAILURE;
25275 }
25276
25277 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25278
25279 /*-------------------------------------------------------------------------
25280 Extract response and send it to UMAC
25281 -------------------------------------------------------------------------*/
25282 halStatus = *((eHalStatus*)pEventData->pEventData);
25283 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25284
25285 /*Notify UMAC*/
25286 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25287
25288 return WDI_STATUS_SUCCESS;
25289}/*WDI_ProcessSetTmLevelRsp*/
25290
25291/**
25292 @brief Process Set Thermal Mitigation level Changed request
25293
25294 @param pWDICtx: pointer to the WLAN DAL context
25295 pEventData: pointer to the event information structure
25296
25297 @see
25298 @return Result of the function call
25299*/
25300WDI_Status
25301WDI_ProcessSetTmLevelReq
25302(
25303 WDI_ControlBlockType* pWDICtx,
25304 WDI_EventInfoType* pEventData
25305)
25306{
25307 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25308 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25309 wpt_uint8* pSendBuffer = NULL;
25310 wpt_uint16 usDataOffset = 0;
25311 wpt_uint16 usSendSize = 0;
25312 tSetThermalMitgationType halTmMsg;
25313
25314 /*-------------------------------------------------------------------------
25315 Sanity check
25316 -------------------------------------------------------------------------*/
25317 if (( NULL == pEventData ) ||
25318 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25319 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25320 {
25321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 WDI_ASSERT(0);
25324 return WDI_STATUS_E_FAILURE;
25325 }
25326
25327 /*-----------------------------------------------------------------------
25328 Get message buffer
25329 -----------------------------------------------------------------------*/
25330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25331 sizeof(halTmMsg),
25332 &pSendBuffer, &usDataOffset, &usSendSize))||
25333 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25334 {
25335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25336 "Unable to get send buffer in Set PNO req %x %x %x",
25337 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25338 WDI_ASSERT(0);
25339 return WDI_STATUS_E_FAILURE;
25340 }
25341
25342 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25343 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25344
25345 wpalMemoryCopy( pSendBuffer+usDataOffset,
25346 &halTmMsg,
25347 sizeof(halTmMsg));
25348
25349 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25350 pWDICtx->pfncRspCB = NULL;
25351 /*-------------------------------------------------------------------------
25352 Send Get STA Request to HAL
25353 -------------------------------------------------------------------------*/
25354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25355 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25356}
25357
25358/* Fill the value from the global features enabled array to the global capabilities
25359 * bitmap struct
25360 */
25361static void
25362FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25363{
25364 wpt_int8 i;
25365 for (i=0; i<len; i++)
25366 {
25367 setFeatCaps(fCaps, enabledFeat[i]);
25368 }
25369}
25370
25371/**
25372 @brief WDI_featureCapsExchangeReq
25373 Post feature capability bitmap exchange event.
25374 Host will send its own capability to FW in this req and
25375 expect FW to send its capability back as a bitmap in Response
25376
25377 @param
25378
25379 wdiFeatureCapsExchangeCb: callback called on getting the response.
25380 It is kept to mantain similarity between WDI reqs and if needed, can
25381 be used in future. Currently, It is set to NULL
25382
25383 pUserData: user data will be passed back with the
25384 callback
25385
25386 @see
25387 @return Result of the function call
25388*/
25389WDI_Status
25390WDI_featureCapsExchangeReq
25391(
25392 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25393 void* pUserData
25394)
25395{
25396 WDI_EventInfoType wdiEventData;
25397 wpt_int32 fCapsStructSize;
25398
25399 /*------------------------------------------------------------------------
25400 Sanity Check
25401 ------------------------------------------------------------------------*/
25402 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25403 {
25404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25405 "WDI API call before module is initialized - Fail request");
25406
25407 return WDI_STATUS_E_NOT_ALLOWED;
25408 }
25409
25410 /* Allocate memory separately for global variable carrying FW caps */
25411 fCapsStructSize = sizeof(tWlanFeatCaps);
25412 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25413 if ( NULL == gpHostWlanFeatCaps )
25414 {
25415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25416 "Cannot allocate memory for host capability info\n");
25417 WDI_ASSERT(0);
25418 return WDI_STATUS_MEM_FAILURE;
25419 }
25420
25421 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25422
25423 /*------------------------------------------------------------------------
25424 Fill in Event data and post to the Main FSM
25425 ------------------------------------------------------------------------*/
25426 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25427 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25429 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 gpHostWlanFeatCaps->featCaps[0],
25431 gpHostWlanFeatCaps->featCaps[1],
25432 gpHostWlanFeatCaps->featCaps[2],
25433 gpHostWlanFeatCaps->featCaps[3]
25434 );
25435
25436 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25437 wdiEventData.pEventData = gpHostWlanFeatCaps;
25438 wdiEventData.uEventDataSize = fCapsStructSize;
25439 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25440 wdiEventData.pUserData = pUserData;
25441
25442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25443}
25444
25445/**
Yathish9f22e662012-12-10 14:21:35 -080025446 @brief Disable Active mode offload in Host
25447
25448 @param void
25449 @see
25450 @return void
25451*/
25452void
25453WDI_disableCapablityFeature(wpt_uint8 feature_index)
25454{
25455 supportEnabledFeatures[feature_index] = 0;
25456 return;
25457}
25458
25459/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 @brief Process Host-FW Capability Exchange Request function
25461
25462 @param pWDICtx: pointer to the WLAN DAL context
25463 pEventData: pointer to the event information structure
25464
25465 @see
25466 @return Result of the function call
25467*/
25468WDI_Status
25469WDI_ProcessFeatureCapsExchangeReq
25470(
25471 WDI_ControlBlockType* pWDICtx,
25472 WDI_EventInfoType* pEventData
25473)
25474{
25475 wpt_uint8* pSendBuffer = NULL;
25476 wpt_uint16 usDataOffset = 0;
25477 wpt_uint16 usSendSize = 0;
25478 wpt_uint16 usLen = 0;
25479
25480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25481
25482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025483 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025484
25485 /*-------------------------------------------------------------------------
25486 Sanity check
25487 -------------------------------------------------------------------------*/
25488 /* Call back function is NULL since not required for cap exchange req */
25489 if (( NULL == pEventData ) ||
25490 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25491 {
25492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 WDI_ASSERT(0);
25495 return WDI_STATUS_E_FAILURE;
25496 }
25497
25498 /*-----------------------------------------------------------------------
25499 Get message buffer
25500 -----------------------------------------------------------------------*/
25501 usLen = sizeof(tWlanFeatCaps);
25502
25503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25504 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25505 usLen,
25506 &pSendBuffer, &usDataOffset, &usSendSize))||
25507 ( usSendSize < (usDataOffset + usLen )))
25508 {
25509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25510 "Unable to get send buffer in feat caps exchange req %x %x",
25511 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25512 WDI_ASSERT(0);
25513 return WDI_STATUS_E_FAILURE;
25514 }
25515
25516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025517 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25519 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25520 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25521 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25522 );
25523
25524 /* Copy host caps after the offset in the send buffer */
25525 wpalMemoryCopy( pSendBuffer+usDataOffset,
25526 (tWlanFeatCaps *)pEventData->pEventData,
25527 usLen);
25528
25529 /*-------------------------------------------------------------------------
25530 Send Start Request to HAL
25531 -------------------------------------------------------------------------*/
25532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25533 (WDI_StartRspCb)pEventData->pCBfnc,
25534 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25535
25536}/*WDI_ProcessFeatureCapsExchangeReq*/
25537
25538/**
25539 @brief Process Host-FW Capability Exchange Response function
25540
25541 @param pWDICtx: pointer to the WLAN DAL context
25542 pEventData: pointer to the event information structure
25543
25544 @see
25545 @return Result of the function call
25546*/
25547WDI_Status
25548WDI_ProcessFeatureCapsExchangeRsp
25549(
25550 WDI_ControlBlockType* pWDICtx,
25551 WDI_EventInfoType* pEventData
25552)
25553{
25554 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25555 wpt_int32 fCapsStructSize;
25556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25557
25558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025559 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025560
25561 /*-------------------------------------------------------------------------
25562 Sanity check
25563 -------------------------------------------------------------------------*/
25564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25565 ( NULL == pEventData->pEventData ))
25566 {
25567 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 WDI_ASSERT(0);
25571 return WDI_STATUS_E_FAILURE;
25572 }
25573
25574 /* Allocate memory separately for global variable carrying FW caps */
25575 fCapsStructSize = sizeof(tWlanFeatCaps);
25576 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25577 if ( NULL == gpFwWlanFeatCaps )
25578 {
25579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25580 "Cannot allocate memory for host capability info\n");
25581 WDI_ASSERT(0);
25582 return WDI_STATUS_MEM_FAILURE;
25583 }
25584
25585 /*-------------------------------------------------------------------------
25586 Unpack HAL Response Message - the header was already extracted by the
25587 main Response Handling procedure
25588 -------------------------------------------------------------------------*/
25589 /*-------------------------------------------------------------------------
25590 Extract response and send it to UMAC
25591 -------------------------------------------------------------------------*/
25592
25593 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25594 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25596 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 gpFwWlanFeatCaps->featCaps[0],
25598 gpFwWlanFeatCaps->featCaps[1],
25599 gpFwWlanFeatCaps->featCaps[2],
25600 gpFwWlanFeatCaps->featCaps[3]
25601 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025602 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25603
25604 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25605 if (wdiFeatureCapsExchangeCb != NULL)
25606 wdiFeatureCapsExchangeCb(NULL, NULL);
25607
25608 return WDI_STATUS_SUCCESS;
25609}
25610
Mohit Khanna4a70d262012-09-11 16:30:12 -070025611#ifdef WLAN_FEATURE_11AC
25612WDI_Status
25613WDI_ProcessUpdateVHTOpModeRsp
25614(
25615 WDI_ControlBlockType* pWDICtx,
25616 WDI_EventInfoType* pEventData
25617)
25618{
25619 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25620 WDI_Status wdiStatus;
25621 eHalStatus halStatus;
25622
25623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25624
25625 /*-------------------------------------------------------------------------
25626 Sanity check
25627 -------------------------------------------------------------------------*/
25628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25629 ( NULL == pEventData->pEventData))
25630 {
25631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025632 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025633 WDI_ASSERT(0);
25634 return WDI_STATUS_E_FAILURE;
25635 }
25636 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25637
25638 /*-------------------------------------------------------------------------
25639 Extract response and send it to UMAC
25640 -------------------------------------------------------------------------*/
25641 halStatus = *((eHalStatus*)pEventData->pEventData);
25642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25643
25644 /*Notify UMAC*/
25645 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25646
25647 return WDI_STATUS_SUCCESS;
25648}
25649#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025650/**
25651 @brief WDI_getHostWlanFeatCaps
25652 WDI API that returns whether the feature passed to it as enum value in
25653 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25654 variable storing host capability bitmap to find this. This can be used by
25655 other moduels to decide certain things like call different APIs based on
25656 whether a particular feature is supported.
25657
25658 @param
25659
25660 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25661
25662 @see
25663 @return
25664 0 - if the feature is NOT supported in host
25665 any non-zero value - if the feature is SUPPORTED in host.
25666*/
25667wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25668{
25669 wpt_uint8 featSupported = 0;
25670 if (gpHostWlanFeatCaps != NULL)
25671 {
25672 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25673 }
25674 else
25675 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025677 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 }
25679 return featSupported;
25680}
25681
25682/**
25683 @brief WDI_getFwWlanFeatCaps
25684 WDI API that returns whether the feature passed to it as enum value in
25685 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25686 variable storing host capability bitmap to find this. This can be used by
25687 other moduels to decide certain things like call different APIs based on
25688 whether a particular feature is supported.
25689
25690 @param
25691
25692 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25693 in wlan_hal_msg.h.
25694
25695 @see
25696 @return
25697 0 - if the feature is NOT supported in FW
25698 any non-zero value - if the feature is SUPPORTED in FW.
25699*/
25700wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25701{
25702 wpt_uint8 featSupported = 0;
25703 if (gpFwWlanFeatCaps != NULL)
25704 {
25705 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25706 }
25707 else
25708 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025710 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 }
25712 return featSupported;
25713}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025714
25715#ifdef WLAN_FEATURE_11AC
25716WDI_Status
25717WDI_ProcessUpdateVHTOpModeReq
25718(
25719 WDI_ControlBlockType* pWDICtx,
25720 WDI_EventInfoType* pEventData
25721)
25722{
25723 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25724 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25725 wpt_uint8* pSendBuffer = NULL;
25726 wpt_uint16 usDataOffset = 0;
25727 wpt_uint16 usSendSize = 0;
25728
25729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25730
25731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025732 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025733
25734 /*-------------------------------------------------------------------------
25735 Sanity check
25736 -------------------------------------------------------------------------*/
25737 if (( NULL == pEventData ) ||
25738 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25739 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25740 {
25741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025742 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025743 WDI_ASSERT(0);
25744 return WDI_STATUS_E_FAILURE;
25745 }
25746
25747 /*-----------------------------------------------------------------------
25748 Get message buffer
25749 -----------------------------------------------------------------------*/
25750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25751 sizeof(WDI_UpdateVHTOpMode),
25752 &pSendBuffer, &usDataOffset, &usSendSize))||
25753 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25754 {
25755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25756 "Unable to get send buffer in update vht opMode req");
25757 WDI_ASSERT(0);
25758 return WDI_STATUS_E_FAILURE;
25759 }
25760
25761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25762 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25763
25764 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25765 sizeof(WDI_UpdateVHTOpMode));
25766
25767 /*-------------------------------------------------------------------------
25768 Send Start Request to HAL
25769 -------------------------------------------------------------------------*/
25770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25771 wdiVHTOpModeCb,
25772 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25773
25774}
25775
25776WDI_Status
25777WDI_UpdateVHTOpModeReq
25778(
25779 WDI_UpdateVHTOpMode *pData,
25780 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25781 void* pUserData
25782)
25783{
25784 WDI_EventInfoType wdiEventData;
25785
25786 /*------------------------------------------------------------------------
25787 Sanity Check
25788 ------------------------------------------------------------------------*/
25789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25790 {
25791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25792 "WDI API call before module is initialized - Fail request");
25793
25794 return WDI_STATUS_E_NOT_ALLOWED;
25795 }
25796
25797 /*------------------------------------------------------------------------
25798 Fill in Event data and post to the Main FSM
25799 ------------------------------------------------------------------------*/
25800 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25801 wdiEventData.pEventData = pData;
25802 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25803 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25804 wdiEventData.pUserData = pUserData;
25805
25806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25807 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25808
25809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25810
25811}
25812#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025813
25814/**
25815 @brief WDI_TransportChannelDebug -
25816 Display DXE Channel debugging information
25817 User may request to display DXE channel snapshot
25818 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025819
Jeff Johnsonb88db982012-12-10 13:34:59 -080025820 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025821 @param enableStallDetect : Enable stall detect feature
25822 This feature will take effect to data performance
25823 Not integrate till fully verification
25824 @see
25825 @return none
25826*/
25827void WDI_TransportChannelDebug
25828(
25829 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025830 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025831)
25832{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025833 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025834 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025835}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025836/**
25837 @brief WDI_SsrTimerCB
25838 Callback function for SSR timer, if this is called then the graceful
25839 shutdown for Riva did not happen.
25840
25841 @param pUserData : user data to timer
25842
25843 @see
25844 @return none
25845*/
25846void
25847WDI_SsrTimerCB
25848(
25849 void *pUserData
25850)
25851{
25852 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25854
25855 if (NULL == pWDICtx )
25856 {
25857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025858 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025859 WDI_ASSERT(0);
25860 return;
25861 }
25862 wpalRivaSubystemRestart();
25863
25864 return;
25865
25866}/*WDI_SsrTimerCB*/