blob: a6705b032822c8893652f52f7bbc975bd3ee47bd [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080086#include <vos_trace.h>
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi.h"
88#include "wlan_qct_wdi_i.h"
89#include "wlan_qct_wdi_sta.h"
90#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070091
Jeff Johnsone7245742012-09-05 17:12:55 -070092#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
94#include "wlan_qct_pal_api.h"
95#include "wlan_qct_pal_type.h"
96#include "wlan_qct_pal_status.h"
97#include "wlan_qct_pal_sync.h"
98#include "wlan_qct_pal_msg.h"
99#include "wlan_qct_pal_trace.h"
100#include "wlan_qct_pal_packet.h"
101
Jeff Johnsone7245742012-09-05 17:12:55 -0700102#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700103
104#include "wlan_hal_msg.h"
105
106#ifdef ANI_MANF_DIAG
107#include "pttMsgApi.h"
108#endif /* ANI_MANF_DIAG */
109
110/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700111 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700112 ===========================================================================*/
113#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
114
Jeff Johnsone7245742012-09-05 17:12:55 -0700115#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
116#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
117
Yathishd8713192012-12-10 14:21:35 -0800118#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700119
120#ifdef FEATURE_WLAN_SCAN_PNO
121#define WDI_PNO_VERSION_MASK 0x8000
122#endif
123
124/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700125static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700126/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700127static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700128/* array of features supported. Need to add a new feature
129 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
130 */
131static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800132 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800133#ifdef WLAN_SOFTAP_VSTA_FEATURE
134 ,SAP32STA
135#else
136 ,FEATURE_NOT_SUPPORTED
137#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800138#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800139 ,TDLS
140#else
141 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800142#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800143 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800144#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
145 ,WLANACTIVE_OFFLOAD
146#else
147 ,FEATURE_NOT_SUPPORTED
148#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800149 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700150
151/*--------------------------------------------------------------------------
152 WLAN DAL State Machine
153 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700154WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700155{
156 /*WDI_INIT_ST*/
157 {{
158 WDI_MainStart, /*WDI_START_EVENT*/
159 NULL, /*WDI_STOP_EVENT*/
160 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
161 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
162 WDI_MainClose, /*WDI_CLOSE_EVENT*/
163 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
164 }},
165
166 /*WDI_STARTED_ST*/
167 {{
168 WDI_MainStartStarted, /*WDI_START_EVENT*/
169 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
170 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
171 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
172 NULL, /*WDI_CLOSE_EVENT*/
173 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
174 }},
175
176 /*WDI_STOPPED_ST*/
177 {{
178 WDI_MainStart, /*WDI_START_EVENT*/
179 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
180 NULL, /*WDI_REQUEST_EVENT*/
181 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
182 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700183 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700184 }},
185
186 /*WDI_BUSY_ST*/
187 {{
188 WDI_MainStartBusy, /*WDI_START_EVENT*/
189 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
190 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
191 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
192 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
193 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
194 }}
195};
196
Jeff Johnsone7245742012-09-05 17:12:55 -0700197/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700198 DAL Request Processing Array - the functions in this table will only be
199 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700200 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700201 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700202WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700203{
204 /*INIT*/
205 WDI_ProcessStartReq, /* WDI_START_REQ */
206 WDI_ProcessStopReq, /* WDI_STOP_REQ */
207 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
208
209 /*SCAN*/
210 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
211 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
212 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
213 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
214
215 /*ASSOCIATION*/
216 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
217 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
218 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
219 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
220 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
221
222 /* Security */
223 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
224 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
225 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
226 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
227
228 /* QoS and BA APIs */
229 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
230 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
231 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
232 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
233 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
234
235 /* Miscellaneous Control APIs */
236 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
237 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
238 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
239 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
240 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
241
242 /*BA APIs*/
243 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
244 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
245
246 /*Beacon processing APIs*/
247 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
248 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
249
250 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
251 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
252 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
253 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
254#ifdef WLAN_FEATURE_P2P
255 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
256#else
257 NULL,
258#endif
259 /* PowerSave APIs */
260 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
261 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
262 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
263 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
264 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
265 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
266 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
267 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
268 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
269 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
270 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
271 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
272 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
273 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
274 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
275 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
276 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
277 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
278 /*NV Download APIs*/
279 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
280 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
281 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
282#ifdef WLAN_FEATURE_VOWIFI_11R
283 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
284#else
285 NULL,
286#endif /* WLAN_FEATURE_VOWIFI_11R */
287 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
288 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
289#ifdef ANI_MANF_DIAG
290 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
291#else
292 NULL,
293#endif /* ANI_MANF_DIAG */
Jeff Johnsone7245742012-09-05 17:12:55 -0700294
295#ifdef FEATURE_OEM_DATA_SUPPORT
296 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
297#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700298 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700299#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700300 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700301
302 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700303
304#ifdef FEATURE_WLAN_SCAN_PNO
305 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
306 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
307 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
308#else
309 NULL,
310 NULL,
311 NULL,
312#endif /* FEATURE_WLAN_SCAN_PNO */
313
314 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700315
Jeff Johnson295189b2012-06-20 16:38:30 -0700316#ifdef WLAN_FEATURE_PACKET_FILTERING
317 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700319 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700320 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700321 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700322 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700323 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700324 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700325#else
326 NULL,
327 NULL,
328 NULL,
329 NULL,
330#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700331 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700332 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
333 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
334
335 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
336#ifdef FEATURE_WLAN_CCX
337 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
338#else
339 NULL,
340#endif
341
342#ifdef WLAN_FEATURE_GTK_OFFLOAD
343 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
344 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
345#else
346 NULL,
347 NULL,
348#endif // WLAN_FEATURE_GTK_OFFLOAD
349
350 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
351 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700352#ifdef WLAN_FEATURE_11AC
353 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
354#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700355 /*-------------------------------------------------------------------------
356 Indications
357 -------------------------------------------------------------------------*/
358 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
359};
360
361
Jeff Johnsone7245742012-09-05 17:12:55 -0700362/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 DAL Request Processing Array - the functions in this table will only be
364 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700367WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700368{
369 /*INIT*/
370 WDI_ProcessStartRsp, /* WDI_START_RESP */
371 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
372 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
373
374 /*SCAN*/
375 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
376 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
377 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
378 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
379
380 /* ASSOCIATION*/
381 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
382 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
383 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
384 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
385 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
386
387 /* Security */
388 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
389 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
390 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
391 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
392
393 /* QoS and BA APIs */
394 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
395 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
396 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
397 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
398 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
399
400 /* Miscellaneous Control APIs */
401 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
402 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
403 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
404 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
405 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
406
407 /* BA APIs*/
408 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
409 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700410
Jeff Johnson295189b2012-06-20 16:38:30 -0700411 /* IBSS APIs*/
412 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
413 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
414
415 /*Soft AP APIs*/
416 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
417 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
418 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
419 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
420
421 /* PowerSave APIs */
422 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
423 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
424 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
425 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
426 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
427 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
428 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
429 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
430 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
431 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
432 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
433 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
434 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
435 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
436 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
437 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
438 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
439 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700440
Jeff Johnson295189b2012-06-20 16:38:30 -0700441
442 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
443
444 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
445 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
446#ifdef WLAN_FEATURE_VOWIFI_11R
447 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
448#else
449 NULL,
450#endif /* WLAN_FEATURE_VOWIFI_11R */
451 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
452 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700453#ifdef FEATURE_OEM_DATA_SUPPORT
454 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
455#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700457#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
459
460#ifdef WLAN_FEATURE_P2P
461 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
462#else
463 NULL,
464#endif
465
466#ifdef ANI_MANF_DIAG
467 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
468#else
469 NULL,
470#endif /* ANI_MANF_DIAG */
471
Jeff Johnsone7245742012-09-05 17:12:55 -0700472 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
473
Jeff Johnson295189b2012-06-20 16:38:30 -0700474#ifdef FEATURE_WLAN_SCAN_PNO
475 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
476 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
477 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
478#else
479 NULL,
480 NULL,
481 NULL,
482#endif // FEATURE_WLAN_SCAN_PNO
483
484 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
485
486 /*---------------------------------------------------------------------
487 Indications
488 ---------------------------------------------------------------------*/
489#ifdef WLAN_FEATURE_PACKET_FILTERING
490 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700491 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700492 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700493 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700494 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700496 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700497 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700498#else
499 NULL,
500 NULL,
501 NULL,
502 NULL,
503#endif // WLAN_FEATURE_PACKET_FILTERING
504
505 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
506 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
507
508 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
509#ifdef FEATURE_WLAN_CCX
510 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
511#else
512 NULL,
513#endif
514
515#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700516 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
517 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700518#else
519 NULL,
520 NULL,
521#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
523 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700524#ifdef WLAN_FEATURE_11AC
525 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
526#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700527
528 /*---------------------------------------------------------------------
529 Indications
530 ---------------------------------------------------------------------*/
531 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
532 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
533 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
534 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
535 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
536 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
537
538 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
539
540 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
541
542#ifdef WLAN_FEATURE_P2P
543 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
544#else
545 NULL,
546#endif
547
548#ifdef FEATURE_WLAN_SCAN_PNO
549 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
550#else
551 NULL,
552#endif // FEATURE_WLAN_SCAN_PNO
553
554#ifdef WLAN_WAKEUP_EVENTS
555 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
556#else // WLAN_WAKEUP_EVENTS
557 NULL,
558#endif // WLAN_WAKEUP_EVENTS
559
560 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800561
562#ifdef WLAN_FEATURE_P2P
563 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
564#else
565 NULL,
566#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700567};
568
569
Jeff Johnsone7245742012-09-05 17:12:55 -0700570/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 WLAN DAL Global Control Block
572 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700573WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700574static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
575
Jeff Johnsone7245742012-09-05 17:12:55 -0700576const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700577
578/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700579WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700580void* WDI_GET_PAL_CTX( void )
581{
Jeff Johnsone7245742012-09-05 17:12:55 -0700582 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583}/*WDI_GET_PAL_CTX*/
584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700586 Helper inline converters
587 ============================================================================*/
588/*Convert WDI driver type into HAL driver type*/
589WPT_STATIC WPT_INLINE WDI_Status
590WDI_HAL_2_WDI_STATUS
591(
592 eHalStatus halStatus
593);
594
595/*Convert WDI request type into HAL request type*/
596WPT_STATIC WPT_INLINE tHalHostMsgType
597WDI_2_HAL_REQ_TYPE
598(
599 WDI_RequestEnumType wdiReqType
600);
601
602/*Convert WDI response type into HAL response type*/
603WPT_STATIC WPT_INLINE WDI_ResponseEnumType
604HAL_2_WDI_RSP_TYPE
605(
606 tHalHostMsgType halMsg
607);
608
609/*Convert WDI driver type into HAL driver type*/
610WPT_STATIC WPT_INLINE tDriverType
611WDI_2_HAL_DRV_TYPE
612(
613 WDI_DriverType wdiDriverType
614);
615
616/*Convert WDI stop reason into HAL stop reason*/
617WPT_STATIC WPT_INLINE tHalStopType
618WDI_2_HAL_STOP_REASON
619(
620 WDI_StopType wdiStopType
621);
622
623/*Convert WDI scan mode type into HAL scan mode type*/
624WPT_STATIC WPT_INLINE eHalSysMode
625WDI_2_HAL_SCAN_MODE
626(
627 WDI_ScanMode wdiScanMode
628);
629
630/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700631WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700632WDI_2_HAL_SEC_CH_OFFSET
633(
634 WDI_HTSecondaryChannelOffset wdiSecChOffset
635);
636
637/*Convert WDI BSS type into HAL BSS type*/
638WPT_STATIC WPT_INLINE tSirBssType
639WDI_2_HAL_BSS_TYPE
640(
641 WDI_BssType wdiBSSType
642);
643
644/*Convert WDI NW type into HAL NW type*/
645WPT_STATIC WPT_INLINE tSirNwType
646WDI_2_HAL_NW_TYPE
647(
648 WDI_NwType wdiNWType
649);
650
651/*Convert WDI chanel bonding type into HAL cb type*/
652WPT_STATIC WPT_INLINE ePhyChanBondState
653WDI_2_HAL_CB_STATE
654(
655 WDI_PhyChanBondState wdiCbState
656);
657
658/*Convert WDI chanel bonding type into HAL cb type*/
659WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
660WDI_2_HAL_HT_OPER_MODE
661(
662 WDI_HTOperatingMode wdiHTOperMode
663);
664
665/*Convert WDI mimo PS type into HAL mimo PS type*/
666WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
667WDI_2_HAL_MIMO_PS
668(
669 WDI_HTMIMOPowerSaveState wdiHTOperMode
670);
671
672/*Convert WDI ENC type into HAL ENC type*/
673WPT_STATIC WPT_INLINE tAniEdType
674WDI_2_HAL_ENC_TYPE
675(
676 WDI_EncryptType wdiEncType
677);
678
679/*Convert WDI WEP type into HAL WEP type*/
680WPT_STATIC WPT_INLINE tAniWepType
681WDI_2_HAL_WEP_TYPE
682(
683 WDI_WepType wdiWEPType
684);
685
686/*Convert WDI Link State into HAL Link State*/
687WPT_STATIC WPT_INLINE tSirLinkState
688WDI_2_HAL_LINK_STATE
689(
690 WDI_LinkStateType wdiLinkState
691);
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693/*Translate a STA Context from WDI into HAL*/
694WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700695void
696WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700697(
Jeff Johnson295189b2012-06-20 16:38:30 -0700698 tConfigStaParams* phalConfigSta,
699 WDI_ConfigStaReqInfoType* pwdiConfigSta
700);
Jeff Johnsone7245742012-09-05 17:12:55 -0700701
702/*Translate a Rate set info from WDI into HAL*/
703WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700704WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700705(
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 tSirMacRateSet* pHalRateSet,
707 WDI_RateSet* pwdiRateSet
708);
709
710/*Translate an EDCA Parameter Record from WDI into HAL*/
711WPT_STATIC WPT_INLINE void
712WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700713(
Jeff Johnson295189b2012-06-20 16:38:30 -0700714 tSirMacEdcaParamRecord* phalEdcaParam,
715 WDI_EdcaParamRecord* pWDIEdcaParam
716);
717
718/*Copy a management frame header from WDI fmt into HAL fmt*/
719WPT_STATIC WPT_INLINE void
720WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
721(
722 tSirMacMgmtHdr* pmacMgmtHdr,
723 WDI_MacMgmtHdr* pwdiMacMgmtHdr
724);
725
726/*Copy config bss parameters from WDI fmt into HAL fmt*/
727WPT_STATIC WPT_INLINE void
728WDI_CopyWDIConfigBSSToHALConfigBSS
729(
730 tConfigBssParams* phalConfigBSS,
731 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
732);
733
Jeff Johnsone7245742012-09-05 17:12:55 -0700734/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700735 pointed to by user data */
736WPT_STATIC WPT_INLINE void
737WDI_ExtractRequestCBFromEvent
738(
739 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700740 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 void** ppUserData
742);
743
744wpt_uint8
745WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700746(
Jeff Johnson295189b2012-06-20 16:38:30 -0700747 WDI_ControlBlockType* pWDICtx,
748 WDI_BSSSessionType** ppSession
749);
750
751void
752WDI_AddBcastSTAtoSTATable
753(
754 WDI_ControlBlockType* pWDICtx,
755 WDI_AddStaParams * staParams,
756 wpt_uint16 usBcastStaIdx
757);
758
759WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700760(
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 WDI_ControlBlockType* pWDICtx,
762 WDI_EventInfoType* pEventData
763);
764
765void
766WDI_SetPowerStateCb
767(
768 wpt_status status,
769 unsigned int dxePhyAddr,
770 void *pContext
771);
772
773#define CASE_RETURN_STRING( str ) \
774 case ( ( str ) ): return( #str ); break \
775
776/**
777 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700778
779 @param wdiReqMsgId: WDI Message request Id
780
781 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 @return Result of the function call
783*/
784static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
785{
786 switch (wdiReqMsgId)
787 {
788 CASE_RETURN_STRING( WDI_START_REQ );
789 CASE_RETURN_STRING( WDI_STOP_REQ );
790 CASE_RETURN_STRING( WDI_CLOSE_REQ );
791 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
792 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
793 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
794 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
795 CASE_RETURN_STRING( WDI_JOIN_REQ );
796 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
797 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
798 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
799 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
800 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
801 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
802 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
803 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
804 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
805 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
806 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
808 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
809 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
810 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
811 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
812 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
813 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
814 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
815 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
816 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
817 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
818 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
819 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
820 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
821 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
822 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
823 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
824 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
825 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
826 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
827 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
828 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
829 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
830 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
831 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
832 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
833 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
834 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
835 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
836 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
837 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
838 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
839 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
840 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
841 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
842 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
843 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
844 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
845 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
846 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
847 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
850 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
851 #ifdef FEATURE_WLAN_SCAN_PNO
852 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
853 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
854 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
855 #endif
856 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
857 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
858 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
859 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
860 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
862 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
863 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
864 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
865 default:
866 return "Unknown WDI MessageId";
867 }
868}
869
870
871
872/**
873 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700874
875 @param wdiRespMsgId: WDI Message response Id
876
877 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700878 @return Result of the function call
879*/
880static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
881{
882 switch (wdiRespMsgId)
883 {
884 CASE_RETURN_STRING( WDI_START_RESP );
885 CASE_RETURN_STRING( WDI_STOP_RESP );
886 CASE_RETURN_STRING( WDI_CLOSE_RESP );
887 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
888 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
889 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
890 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
891 CASE_RETURN_STRING( WDI_JOIN_RESP );
892 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
893 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
894 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
895 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
896 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
897 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
898 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
899 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
900 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
901 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
902 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
903 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
904 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
905 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
906 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
907 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
908 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
909 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
910 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
911 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
912 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
913 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
914 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
915 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
916 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
917 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
918 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
919 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
920 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
921 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
922 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
923 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
924 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
925 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
926 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
927 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
928 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
929 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
930 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
931 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
932 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
933 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
934 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
935 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
936 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
937 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
938 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
939 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
940 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
941 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
942 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
943 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700944 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700945 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
946 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
947 #ifdef FEATURE_WLAN_SCAN_PNO
948 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
949 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
950 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
951 #endif
952 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
953 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
954 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
955 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
956 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
957 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
958 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
959 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
960 default:
961 return "Unknown WDI MessageId";
962 }
963}
964
965/**
966 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700967
968 @param halStatusId: HAL status Id
969
970 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 @return Result of the function call
972*/
973static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
974{
975 switch (halStatusId)
976 {
977 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
978 CASE_RETURN_STRING( PAL_STATUS_INVAL );
979 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
980 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
981 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
982 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
983 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
985 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
986 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
987 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
988 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
989 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
990 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
991 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
992 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
993 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
994 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
995 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
996 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
997 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
998 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
999 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1000 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1001 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1002 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1003 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1004 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1005 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1006 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1007 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1008 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1009 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1010 default:
1011 return "Unknown HAL status";
1012 }
1013}
1014
Jeff Johnsone7245742012-09-05 17:12:55 -07001015/*========================================================================
1016
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001018
Jeff Johnson295189b2012-06-20 16:38:30 -07001019==========================================================================*/
1020
1021/**
1022 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001023
Jeff Johnson295189b2012-06-20 16:38:30 -07001024 DAL will allocate all the resources it needs. It will open PAL, it will also
1025 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001026 DXE/SMD or any other drivers that they need.
1027
Jeff Johnson295189b2012-06-20 16:38:30 -07001028 @param pOSContext: pointer to the OS context provided by the UMAC
1029 will be passed on to PAL on Open
1030 ppWDIGlobalCtx: output pointer of Global Context
1031 pWdiDevCapability: output pointer of device capability
1032
1033 @return Result of the function call
1034*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001035WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001036WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001037(
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 void* pOSContext,
1039 void** ppWDIGlobalCtx,
1040 WDI_DeviceCapabilityType* pWdiDevCapability,
1041 unsigned int driverType
1042)
1043{
1044 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001045 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001046 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001047 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1049
1050 /*---------------------------------------------------------------------
1051 Sanity check
1052 ---------------------------------------------------------------------*/
1053 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1054 {
1055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1056 "Invalid input parameters in WDI_Init");
1057
Jeff Johnsone7245742012-09-05 17:12:55 -07001058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001059 }
1060
1061 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001062 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001063 ---------------------------------------------------------------------*/
1064 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1065 {
1066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1067 "WDI module already initialized - return");
1068
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001070 }
1071
1072 /*Module is now initialized - this flag is to ensure the fact that multiple
1073 init will not happen on WDI
1074 !! - potential race does exist because read and set are not atomic,
1075 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001076 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001077
1078 /*Setup the control block */
1079 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001080 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001081
1082 /*Setup the STA Table*/
1083 wdiStatus = WDI_STATableInit(&gWDICb);
1084 if ( WDI_STATUS_SUCCESS != wdiStatus )
1085 {
1086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1087 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001088 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 goto fail_STATableInit;
1090 }
1091
1092 /*------------------------------------------------------------------------
1093 Open the PAL
1094 ------------------------------------------------------------------------*/
1095 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1096 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1097 {
1098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1099 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001100 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 goto fail_wpalOpen;
1102 }
1103
1104 /*Initialize main synchro mutex - it will be used to ensure integrity of
1105 the main WDI Control Block*/
1106 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1107 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1108 {
1109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1110 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001111 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001112 goto fail_mutex;
1113 }
1114
1115 /*Initialize the response timer - it will be used to time all messages
1116 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001117 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1118 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001119 &gWDICb);
1120 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1121 {
1122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1123 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001124 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001125 goto fail_timer;
1126 }
1127
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001128 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1129 WDI_SsrTimerCB,
1130 &gWDICb);
1131 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1132 {
1133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1134 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001135 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001136 goto fail_timer2;
1137 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001138 /* Initialize the WDI Pending Request Queue*/
1139 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1140 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1141 {
1142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1143 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001144 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001145 goto fail_pend_queue;
1146 }
1147
1148 /*Init WDI Pending Assoc Id Queue */
1149 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1150 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1151 {
1152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1153 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001154 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 goto fail_assoc_queue;
1156 }
1157
1158 /*Initialize the BSS sessions pending Queue */
1159 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1160 {
1161 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1162 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1163 {
1164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1165 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001166 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001167 goto fail_bss_queue;
1168 }
1169 }
1170
1171 /*Indicate the control block is sufficiently initialized for callbacks*/
1172 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1173
1174 /*------------------------------------------------------------------------
1175 Initialize the Data Path Utility Module
1176 ------------------------------------------------------------------------*/
1177 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1178 if ( WDI_STATUS_SUCCESS != wdiStatus )
1179 {
1180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1181 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001182 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 goto fail_dp_util_init;
1184 }
1185
1186 /* Init Set power state event */
1187 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001189 {
1190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1191 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001192 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001193 goto fail_power_event;
1194 }
1195
1196 /* Init WCTS action event */
1197 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001198 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 {
1200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1201 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001202 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 goto fail_wcts_event;
1204 }
1205
1206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001207 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 ------------------------------------------------------------------------*/
1209 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1210 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001211 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001212 wctsCBs.wctsRxMsgCBData = &gWDICb;
1213
Jeff Johnsone7245742012-09-05 17:12:55 -07001214 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001215 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001216 WDI_CT_CHANNEL_SIZE,
1217 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001218
1219 if ( NULL == gWDICb.wctsHandle )
1220 {
1221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001222 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 goto fail_wcts_open;
1224 }
1225
1226 gWDICb.driverMode = (tDriverType)driverType;
1227 /* FTM mode not need to open Transport Driver */
1228 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001229 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 /*------------------------------------------------------------------------
1231 Open the Data Transport
1232 ------------------------------------------------------------------------*/
1233 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1234 {
1235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001236 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001237 goto fail_wdts_open;
1238 }
1239 }
1240
1241 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001242 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001243
1244 /*Send the context as a ptr to the global WDI Control Block*/
1245 *ppWDIGlobalCtx = &gWDICb;
1246
1247 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001248 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001249 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1250 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1251 return WDI_STATUS_SUCCESS;
1252
1253 /* ERROR handlers
1254 Undo everything that completed successfully */
1255
1256 fail_wdts_open:
1257 {
1258 wpt_status eventStatus;
1259
1260 /* Closing WCTS in this scenario is tricky since it has to close
1261 the SMD channel and then we get notified asynchronously when
1262 the channel has been closed. So we take some of the logic from
1263 the "normal" close procedure in WDI_Close()
1264 */
1265
1266 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001267 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 {
1269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001270 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 }
1272
1273 WCTS_CloseTransport(gWDICb.wctsHandle);
1274
1275 /* Wait for WCTS to close the control transport. If we were able
1276 to reset the event flag, then we'll wait for the event,
1277 otherwise we'll wait for a maximum amount of time required for
1278 the channel to be closed */
1279 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1280 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001281 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 WDI_WCTS_ACTION_TIMEOUT);
1283 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1284 {
1285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001286 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 }
1288 }
1289 else
1290 {
1291 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1292 }
1293 }
1294 fail_wcts_open:
1295 wpalEventDelete(&gWDICb.wctsActionEvent);
1296 fail_wcts_event:
1297 wpalEventDelete(&gWDICb.setPowerStateEvent);
1298 fail_power_event:
1299 WDI_DP_UtilsExit(&gWDICb);
1300 fail_dp_util_init:
1301 gWDICb.magic = 0;
1302 fail_bss_queue:
1303 /* entries 0 thru i-1 were successfully initialized */
1304 while (0 < i)
1305 {
1306 i--;
1307 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1308 }
1309 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1310 fail_assoc_queue:
1311 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1312 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001313 wpalTimerDelete(&gWDICb.ssrTimer);
1314 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 wpalTimerDelete(&gWDICb.wptResponseTimer);
1316 fail_timer:
1317 wpalMutexDelete(&gWDICb.wptMutex);
1318 fail_mutex:
1319 wpalClose(gWDICb.pPALContext);
1320 fail_wpalOpen:
1321 WDI_STATableClose(&gWDICb);
1322 fail_STATableInit:
1323 gWDIInitialized = eWLAN_PAL_FALSE;
1324
1325 return WDI_STATUS_E_FAILURE;
1326
1327}/*WDI_Init*/;
1328
1329/**
1330 @brief WDI_Start will be called when the upper MAC is ready to
1331 commence operation with the WLAN Device. Upon the call
1332 of this API the WLAN DAL will pack and send a HAL Start
1333 message to the lower RIVA sub-system if the SMD channel
1334 has been fully opened and the RIVA subsystem is up.
1335
1336 If the RIVA sub-system is not yet up and running DAL
1337 will queue the request for Open and will wait for the
1338 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001339 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001340
1341 WDI_Init must have been called.
1342
Jeff Johnsone7245742012-09-05 17:12:55 -07001343 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001344 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001345
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 wdiStartRspCb: callback for passing back the response of
1347 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001348
Jeff Johnson295189b2012-06-20 16:38:30 -07001349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001350 callback
1351
Jeff Johnson295189b2012-06-20 16:38:30 -07001352 @see WDI_Start
1353 @return Result of the function call
1354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001356WDI_Start
1357(
1358 WDI_StartReqParamsType* pwdiStartParams,
1359 WDI_StartRspCb wdiStartRspCb,
1360 void* pUserData
1361)
1362{
1363 WDI_EventInfoType wdiEventData;
1364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1365
1366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 ------------------------------------------------------------------------*/
1369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1370 {
1371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1372 "WDI API call before module is initialized - Fail request");
1373
Jeff Johnsone7245742012-09-05 17:12:55 -07001374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 }
1376
1377 /*------------------------------------------------------------------------
1378 Fill in Event data and post to the Main FSM
1379 ------------------------------------------------------------------------*/
1380 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001381 wdiEventData.pEventData = pwdiStartParams;
1382 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1383 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001384 wdiEventData.pUserData = pUserData;
1385
1386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1387
1388}/*WDI_Start*/
1389
1390/**
1391 @brief WDI_Stop will be called when the upper MAC is ready to
1392 stop any operation with the WLAN Device. Upon the call
1393 of this API the WLAN DAL will pack and send a HAL Stop
1394 message to the lower RIVA sub-system if the DAL Core is
1395 in started state.
1396
1397 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001398
1399 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001400
1401 WDI_Start must have been called.
1402
Jeff Johnsone7245742012-09-05 17:12:55 -07001403 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001404 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001405
Jeff Johnson295189b2012-06-20 16:38:30 -07001406 wdiStopRspCb: callback for passing back the response of
1407 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001408
Jeff Johnson295189b2012-06-20 16:38:30 -07001409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001410 callback
1411
Jeff Johnson295189b2012-06-20 16:38:30 -07001412 @see WDI_Start
1413 @return Result of the function call
1414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001416WDI_Stop
1417(
1418 WDI_StopReqParamsType* pwdiStopParams,
1419 WDI_StopRspCb wdiStopRspCb,
1420 void* pUserData
1421)
1422{
1423 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001424 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1426
1427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001428 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 ------------------------------------------------------------------------*/
1430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1431 {
1432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1433 "WDI API call before module is initialized - Fail request");
1434
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 }
1437
Jeff Johnson43971f52012-07-17 12:26:56 -07001438 /*Access to the global state must be locked before cleaning */
1439 wpalMutexAcquire(&pWDICtx->wptMutex);
1440
1441 /*Clear all pending request*/
1442 WDI_ClearPendingRequests(pWDICtx);
1443
1444 /*We have completed cleaning unlock now*/
1445 wpalMutexRelease(&pWDICtx->wptMutex);
1446
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 /* Free the global variables */
1448 wpalMemoryFree(gpHostWlanFeatCaps);
1449 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001450 gpHostWlanFeatCaps = NULL;
1451 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001452
1453 /*------------------------------------------------------------------------
1454 Fill in Event data and post to the Main FSM
1455 ------------------------------------------------------------------------*/
1456 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001457 wdiEventData.pEventData = pwdiStopParams;
1458 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1459 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 wdiEventData.pUserData = pUserData;
1461
1462 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1463
1464}/*WDI_Stop*/
1465
1466
1467
1468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001469 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 needs to interact with DAL. DAL will free its control
1471 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001472
1473 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001474
1475 WDI_Stop must have been called.
1476
1477 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001478
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 @see WDI_Stop
1480 @return Result of the function call
1481*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001482WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001483WDI_Close
1484(
1485 void
1486)
1487{
1488 wpt_uint8 i;
1489 WDI_EventInfoType wdiEventData;
1490 wpt_status wptStatus;
1491 wpt_status eventStatus;
1492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1493
1494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001495 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001496 ------------------------------------------------------------------------*/
1497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1498 {
1499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1500 "WDI API call before module is initialized - Fail request");
1501
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 }
1504
1505 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1506 (the control transport will be closed by the FSM and we'll want
1507 to wait until that completes)*/
1508 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001509 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001510 {
1511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001512 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 /* fall through and try to finish closing via the FSM */
1514 }
1515
1516 /*------------------------------------------------------------------------
1517 Fill in Event data and post to the Main FSM
1518 ------------------------------------------------------------------------*/
1519 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001520 wdiEventData.pEventData = NULL;
1521 wdiEventData.uEventDataSize = 0;
1522 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 wdiEventData.pUserData = NULL;
1524
1525 gWDIInitialized = eWLAN_PAL_FALSE;
1526
1527 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1528
1529 /*Wait for WCTS to close the control transport
1530 (but only if we were able to reset the event flag*/
1531 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1532 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001533 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 WDI_WCTS_ACTION_TIMEOUT);
1535 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1536 {
1537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001538 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 }
1540 }
1541
1542 /* Destroy the WCTS action event */
1543 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1544 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1545 {
1546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1547 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001548 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 }
1550
1551 /* Destroy the Set Power State event */
1552 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1553 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1554 {
1555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1556 "WDI Close failed to destroy an event");
1557
Jeff Johnsone7245742012-09-05 17:12:55 -07001558 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001559 }
1560
1561 /*------------------------------------------------------------------------
1562 Closes the Data Path Utility Module
1563 ------------------------------------------------------------------------*/
1564 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1565 {
1566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1567 "WDI Init failed to close the DP Util Module");
1568
Jeff Johnsone7245742012-09-05 17:12:55 -07001569 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 }
1571
1572 /*destroy the BSS sessions pending Queue */
1573 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1574 {
1575 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1576 }
1577
1578 /* destroy the WDI Pending Assoc Id Request Queue*/
1579 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1580
1581 /* destroy the WDI Pending Request Queue*/
1582 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001583
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 /*destroy the response timer */
1585 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1586
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001587 /*destroy the SSR timer */
1588 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1589
Jeff Johnson295189b2012-06-20 16:38:30 -07001590 /*invalidate the main synchro mutex */
1591 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1592 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1593 {
1594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1595 "Failed to delete mutex %d", wptStatus);
1596 WDI_ASSERT(0);
1597 }
1598
1599 /*Clear control block. note that this will clear the "magic"
1600 which will inhibit all asynchronous callbacks*/
1601 WDI_CleanCB(&gWDICb);
1602
1603 return wptStatus;
1604
1605}/*WDI_Close*/
1606
1607/**
1608 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1609 This will do most of the WDI stop & close
1610 operations without doing any handshake with Riva
1611
1612 This will also make sure that the control transport
1613 will NOT be closed.
1614
1615 This request will not be queued.
1616
1617
1618 WDI_Start must have been called.
1619
1620 @param closeTransport: Close control channel if this is set
1621
1622 @return Result of the function call
1623*/
1624WDI_Status
1625WDI_Shutdown
1626(
1627 wpt_boolean closeTransport
1628)
1629{
1630 WDI_EventInfoType wdiEventData;
1631 wpt_status wptStatus;
1632 int i = 0;
1633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1634
1635 /*------------------------------------------------------------------------
1636 Sanity Check
1637 ------------------------------------------------------------------------*/
1638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1639 {
1640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1641 "WDI API call before module is initialized - Fail request");
1642
1643 return WDI_STATUS_E_NOT_ALLOWED;
1644 }
1645
1646 /*------------------------------------------------------------------------
1647 Fill in Event data and post to the Main FSM
1648 ------------------------------------------------------------------------*/
1649 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1650 wdiEventData.pEventData = NULL;
1651 wdiEventData.uEventDataSize = 0;
1652
1653 /* Shutdown will not be queued, if the state is busy timer will be
1654 * stopped & this message will be processed.*/
1655 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001659 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 }
1661 /* Destroy the Set Power State event */
1662 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1666 "WDI Close failed to destroy an event");
1667
1668 WDI_ASSERT(0);
1669 }
1670 /*------------------------------------------------------------------------
1671 Closes the Data Path Utility Module
1672 ------------------------------------------------------------------------*/
1673 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1674 {
1675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1676 "WDI Init failed to close the DP Util Module");
1677
1678 WDI_ASSERT(0);
1679 }
1680 if ( closeTransport )
1681 {
1682 /* Close control transport, called from module unload */
1683 WCTS_CloseTransport(gWDICb.wctsHandle);
1684 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001685 else
1686 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001687 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001688 the pending messages in the transport queue */
1689 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1690 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 /*destroy the BSS sessions pending Queue */
1692 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1693 {
1694 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1695 }
1696
1697 /* destroy the WDI Pending Assoc Id Request Queue*/
1698 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1699 /* destroy the WDI Pending Request Queue*/
1700 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1701 /*destroy the response timer */
1702 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001703 /*destroy the SSR timer */
1704 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001705
1706 /*invalidate the main synchro mutex */
1707 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1708 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1709 {
1710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001711 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 WDI_ASSERT(0);
1713 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001714 /* Free the global variables */
1715 wpalMemoryFree(gpHostWlanFeatCaps);
1716 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001717 gpHostWlanFeatCaps = NULL;
1718 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 /*Clear control block. note that this will clear the "magic"
1720 which will inhibit all asynchronous callbacks*/
1721 WDI_CleanCB(&gWDICb);
1722 return wptStatus;
1723
1724}/*WDI_Shutdown*/
1725
1726
Jeff Johnsone7245742012-09-05 17:12:55 -07001727/*========================================================================
1728
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001730
Jeff Johnson295189b2012-06-20 16:38:30 -07001731==========================================================================*/
1732
1733/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 the WLAN Device to get ready for a scan procedure. Upon
1736 the call of this API the WLAN DAL will pack and send a
1737 HAL Init Scan request message to the lower RIVA
1738 sub-system if DAL is in state STARTED.
1739
1740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001742
1743 WDI_Start must have been called.
1744
1745 @param wdiInitScanParams: the init scan parameters as specified
1746 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001747
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 wdiInitScanRspCb: callback for passing back the response
1749 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001750
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 callback
1753
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 @see WDI_Start
1755 @return Result of the function call
1756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001758WDI_InitScanReq
1759(
1760 WDI_InitScanReqParamsType* pwdiInitScanParams,
1761 WDI_InitScanRspCb wdiInitScanRspCb,
1762 void* pUserData
1763)
1764{
1765 WDI_EventInfoType wdiEventData;
1766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1767
1768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 ------------------------------------------------------------------------*/
1771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1772 {
1773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1774 "WDI API call before module is initialized - Fail request");
1775
Jeff Johnsone7245742012-09-05 17:12:55 -07001776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 }
1778
1779 /*------------------------------------------------------------------------
1780 Fill in Event data and post to the Main FSM
1781 ------------------------------------------------------------------------*/
1782 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 wdiEventData.pEventData = pwdiInitScanParams;
1784 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1785 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 wdiEventData.pUserData = pUserData;
1787
1788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1789
1790}/*WDI_InitScanReq*/
1791
1792/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 wishes to change the Scan channel on the WLAN Device.
1795 Upon the call of this API the WLAN DAL will pack and
1796 send a HAL Start Scan request message to the lower RIVA
1797 sub-system if DAL is in state STARTED.
1798
1799 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001800 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001801
1802 WDI_InitScanReq must have been called.
1803
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001805 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001806
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 wdiStartScanRspCb: callback for passing back the
1808 response of the start scan operation received from the
1809 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001810
Jeff Johnson295189b2012-06-20 16:38:30 -07001811 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 callback
1813
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 @see WDI_InitScanReq
1815 @return Result of the function call
1816*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001817WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001818WDI_StartScanReq
1819(
1820 WDI_StartScanReqParamsType* pwdiStartScanParams,
1821 WDI_StartScanRspCb wdiStartScanRspCb,
1822 void* pUserData
1823)
1824{
1825 WDI_EventInfoType wdiEventData;
1826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1827
1828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 ------------------------------------------------------------------------*/
1831 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1832 {
1833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1834 "WDI API call before module is initialized - Fail request");
1835
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 }
1838
1839 /*------------------------------------------------------------------------
1840 Fill in Event data and post to the Main FSM
1841 ------------------------------------------------------------------------*/
1842 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 wdiEventData.pEventData = pwdiStartScanParams;
1844 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1845 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 wdiEventData.pUserData = pUserData;
1847
1848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1849
1850}/*WDI_StartScanReq*/
1851
1852
1853/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001854 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001855 wants to end scanning for a particular channel that it
1856 had set before by calling Scan Start on the WLAN Device.
1857 Upon the call of this API the WLAN DAL will pack and
1858 send a HAL End Scan request message to the lower RIVA
1859 sub-system if DAL is in state STARTED.
1860
1861 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001862 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001863
1864 WDI_StartScanReq must have been called.
1865
Jeff Johnsone7245742012-09-05 17:12:55 -07001866 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001868
Jeff Johnson295189b2012-06-20 16:38:30 -07001869 wdiEndScanRspCb: callback for passing back the response
1870 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001871
Jeff Johnson295189b2012-06-20 16:38:30 -07001872 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001873 callback
1874
Jeff Johnson295189b2012-06-20 16:38:30 -07001875 @see WDI_StartScanReq
1876 @return Result of the function call
1877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001879WDI_EndScanReq
1880(
1881 WDI_EndScanReqParamsType* pwdiEndScanParams,
1882 WDI_EndScanRspCb wdiEndScanRspCb,
1883 void* pUserData
1884)
1885{
1886 WDI_EventInfoType wdiEventData;
1887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1888
1889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 ------------------------------------------------------------------------*/
1892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1893 {
1894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1895 "WDI API call before module is initialized - Fail request");
1896
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 }
1899
1900 /*------------------------------------------------------------------------
1901 Fill in Event data and post to the Main FSM
1902 ------------------------------------------------------------------------*/
1903 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001904 wdiEventData.pEventData = pwdiEndScanParams;
1905 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1906 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 wdiEventData.pUserData = pUserData;
1908
1909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1910
1911}/*WDI_EndScanReq*/
1912
1913
1914/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 completed the scan process on the WLAN Device. Upon the
1917 call of this API the WLAN DAL will pack and send a HAL
1918 Finish Scan Request request message to the lower RIVA
1919 sub-system if DAL is in state STARTED.
1920
1921 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001922 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001923
1924 WDI_InitScanReq must have been called.
1925
Jeff Johnsone7245742012-09-05 17:12:55 -07001926 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001928
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 wdiFinishScanRspCb: callback for passing back the
1930 response of the finish scan operation received from the
1931 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001934 callback
1935
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 @see WDI_InitScanReq
1937 @return Result of the function call
1938*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001939WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001940WDI_FinishScanReq
1941(
1942 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1943 WDI_FinishScanRspCb wdiFinishScanRspCb,
1944 void* pUserData
1945)
1946{
1947 WDI_EventInfoType wdiEventData;
1948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1949
1950 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001951 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 ------------------------------------------------------------------------*/
1953 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1954 {
1955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1956 "WDI API call before module is initialized - Fail request");
1957
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 }
1960
1961 /*------------------------------------------------------------------------
1962 Fill in Event data and post to the Main FSM
1963 ------------------------------------------------------------------------*/
1964 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 wdiEventData.pEventData = pwdiFinishScanParams;
1966 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1967 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 wdiEventData.pUserData = pUserData;
1969
1970 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1971
1972}/*WDI_FinishScanReq*/
1973
Jeff Johnsone7245742012-09-05 17:12:55 -07001974/*========================================================================
1975
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978==========================================================================*/
1979
1980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 to start an association procedure to a BSS. Upon the
1983 call of this API the WLAN DAL will pack and send a HAL
1984 Join request message to the lower RIVA sub-system if
1985 DAL is in state STARTED.
1986
1987 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001988 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001989
1990 WDI_Start must have been called.
1991
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001994
Jeff Johnson295189b2012-06-20 16:38:30 -07001995 wdiJoinRspCb: callback for passing back the response of
1996 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001997
Jeff Johnson295189b2012-06-20 16:38:30 -07001998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 callback
2000
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 @see WDI_Start
2002 @return Result of the function call
2003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002005WDI_JoinReq
2006(
2007 WDI_JoinReqParamsType* pwdiJoinParams,
2008 WDI_JoinRspCb wdiJoinRspCb,
2009 void* pUserData
2010)
2011{
2012 WDI_EventInfoType wdiEventData;
2013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2014
2015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 ------------------------------------------------------------------------*/
2018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2019 {
2020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2021 "WDI API call before module is initialized - Fail request");
2022
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002024 }
2025
2026 /*------------------------------------------------------------------------
2027 Fill in Event data and post to the Main FSM
2028 ------------------------------------------------------------------------*/
2029 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002030 wdiEventData.pEventData = pwdiJoinParams;
2031 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2032 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002033 wdiEventData.pUserData = pUserData;
2034
2035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2036
2037}/*WDI_JoinReq*/
2038
2039/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002040 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 wishes to configure the newly acquired or in process of
2042 being acquired BSS to the HW . Upon the call of this API
2043 the WLAN DAL will pack and send a HAL Config BSS request
2044 message to the lower RIVA sub-system if DAL is in state
2045 STARTED.
2046
2047 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002049
2050 WDI_JoinReq must have been called.
2051
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002053 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002054
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 wdiConfigBSSRspCb: callback for passing back the
2056 response of the config BSS operation received from the
2057 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002058
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 callback
2061
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 @see WDI_JoinReq
2063 @return Result of the function call
2064*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002066WDI_ConfigBSSReq
2067(
2068 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2069 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2070 void* pUserData
2071)
2072{
2073 WDI_EventInfoType wdiEventData;
2074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2075
2076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 ------------------------------------------------------------------------*/
2079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2080 {
2081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2082 "WDI API call before module is initialized - Fail request");
2083
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 }
2086
2087 /*------------------------------------------------------------------------
2088 Fill in Event data and post to the Main FSM
2089 ------------------------------------------------------------------------*/
2090 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 wdiEventData.pEventData = pwdiConfigBSSParams;
2092 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2093 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002094 wdiEventData.pUserData = pUserData;
2095
2096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2097
2098}/*WDI_ConfigBSSReq*/
2099
2100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 disassociating from the BSS and wishes to notify HW.
2103 Upon the call of this API the WLAN DAL will pack and
2104 send a HAL Del BSS request message to the lower RIVA
2105 sub-system if DAL is in state STARTED.
2106
2107 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002109
2110 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2111
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002113 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002114
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 wdiDelBSSRspCb: callback for passing back the response
2116 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002117
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002119 callback
2120
2121 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 @return Result of the function call
2123*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002124WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002125WDI_DelBSSReq
2126(
2127 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2128 WDI_DelBSSRspCb wdiDelBSSRspCb,
2129 void* pUserData
2130)
2131{
2132 WDI_EventInfoType wdiEventData;
2133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2134
2135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 ------------------------------------------------------------------------*/
2138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2139 {
2140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2141 "WDI API call before module is initialized - Fail request");
2142
Jeff Johnsone7245742012-09-05 17:12:55 -07002143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002144 }
2145
2146 /*------------------------------------------------------------------------
2147 Fill in Event data and post to the Main FSM
2148 ------------------------------------------------------------------------*/
2149 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002150 wdiEventData.pEventData = pwdiDelBSSParams;
2151 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2152 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 wdiEventData.pUserData = pUserData;
2154
2155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2156
2157}/*WDI_DelBSSReq*/
2158
2159/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 associated to a BSS and wishes to configure HW for
2162 associated state. Upon the call of this API the WLAN DAL
2163 will pack and send a HAL Post Assoc request message to
2164 the lower RIVA sub-system if DAL is in state STARTED.
2165
2166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002168
2169 WDI_JoinReq must have been called.
2170
2171 @param wdiPostAssocReqParams: the assoc parameters as specified
2172 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002173
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 wdiPostAssocRspCb: callback for passing back the
2175 response of the post assoc operation received from the
2176 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002177
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 callback
2180
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 @see WDI_JoinReq
2182 @return Result of the function call
2183*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002185WDI_PostAssocReq
2186(
2187 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2188 WDI_PostAssocRspCb wdiPostAssocRspCb,
2189 void* pUserData
2190)
2191{
2192 WDI_EventInfoType wdiEventData;
2193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2194
2195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 ------------------------------------------------------------------------*/
2198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2199 {
2200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2201 "WDI API call before module is initialized - Fail request");
2202
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 }
2205
2206 /*------------------------------------------------------------------------
2207 Fill in Event data and post to the Main FSM
2208 ------------------------------------------------------------------------*/
2209 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 wdiEventData.pEventData = pwdiPostAssocReqParams;
2211 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2212 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 wdiEventData.pUserData = pUserData;
2214
2215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2216
2217}/*WDI_PostAssocReq*/
2218
2219/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 association with another STA has ended and the station
2222 must be deleted from HW. Upon the call of this API the
2223 WLAN DAL will pack and send a HAL Del STA request
2224 message to the lower RIVA sub-system if DAL is in state
2225 STARTED.
2226
2227 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002229
2230 WDI_PostAssocReq must have been called.
2231
Jeff Johnsone7245742012-09-05 17:12:55 -07002232 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 wdiDelSTARspCb: callback for passing back the response
2236 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002237
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 callback
2240
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 @see WDI_PostAssocReq
2242 @return Result of the function call
2243*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002244WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002245WDI_DelSTAReq
2246(
2247 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2248 WDI_DelSTARspCb wdiDelSTARspCb,
2249 void* pUserData
2250)
2251{
2252 WDI_EventInfoType wdiEventData;
2253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2254
2255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 ------------------------------------------------------------------------*/
2258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2259 {
2260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2261 "WDI API call before module is initialized - Fail request");
2262
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 }
2265
2266 /*------------------------------------------------------------------------
2267 Fill in Event data and post to the Main FSM
2268 ------------------------------------------------------------------------*/
2269 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002270 wdiEventData.pEventData = pwdiDelSTAParams;
2271 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2272 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 wdiEventData.pUserData = pUserData;
2274
2275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2276
2277}/*WDI_DelSTAReq*/
2278
Jeff Johnsone7245742012-09-05 17:12:55 -07002279/*========================================================================
2280
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283==========================================================================*/
2284
2285/**
2286 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2287 install a BSS encryption key on the HW. Upon the call of this
2288 API the WLAN DAL will pack and send a Set BSS Key request
2289 message to the lower RIVA sub-system if DAL is in state
2290 STARTED.
2291
2292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002294
2295 WDI_PostAssocReq must have been called.
2296
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002299
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 wdiSetBSSKeyRspCb: callback for passing back the
2301 response of the set BSS Key operation received from the
2302 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002303
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 callback
2306
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 @see WDI_PostAssocReq
2308 @return Result of the function call
2309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002311WDI_SetBSSKeyReq
2312(
2313 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2314 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2315 void* pUserData
2316)
2317{
2318 WDI_EventInfoType wdiEventData;
2319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2320
2321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 ------------------------------------------------------------------------*/
2324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2325 {
2326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2327 "WDI API call before module is initialized - Fail request");
2328
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 }
2331
2332 /*------------------------------------------------------------------------
2333 Fill in Event data and post to the Main FSM
2334 ------------------------------------------------------------------------*/
2335 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2337 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2338 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiEventData.pUserData = pUserData;
2340
2341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2342
2343}/*WDI_SetBSSKeyReq*/
2344
2345/**
2346 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2347 uninstall a BSS key from HW. Upon the call of this API the
2348 WLAN DAL will pack and send a HAL Remove BSS Key request
2349 message to the lower RIVA sub-system if DAL is in state
2350 STARTED.
2351
2352 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002354
2355 WDI_SetBSSKeyReq must have been called.
2356
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002359
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 wdiRemoveBSSKeyRspCb: callback for passing back the
2361 response of the remove BSS key operation received from
2362 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002363
Jeff Johnson295189b2012-06-20 16:38:30 -07002364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 callback
2366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 @see WDI_SetBSSKeyReq
2368 @return Result of the function call
2369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002371WDI_RemoveBSSKeyReq
2372(
2373 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2374 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2375 void* pUserData
2376)
2377{
2378 WDI_EventInfoType wdiEventData;
2379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2380
2381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 ------------------------------------------------------------------------*/
2384 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2385 {
2386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2387 "WDI API call before module is initialized - Fail request");
2388
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002390 }
2391
2392 /*------------------------------------------------------------------------
2393 Fill in Event data and post to the Main FSM
2394 ------------------------------------------------------------------------*/
2395 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2397 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2398 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 wdiEventData.pUserData = pUserData;
2400
2401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2402
2403}/*WDI_RemoveBSSKeyReq*/
2404
2405
2406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 ready to install a STA(ast) encryption key in HW. Upon
2409 the call of this API the WLAN DAL will pack and send a
2410 HAL Set STA Key request message to the lower RIVA
2411 sub-system if DAL is in state STARTED.
2412
2413 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002414 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002415
2416 WDI_PostAssocReq must have been called.
2417
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 wdiSetSTAKeyRspCb: callback for passing back the
2422 response of the set STA key operation received from the
2423 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002424
Jeff Johnson295189b2012-06-20 16:38:30 -07002425 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002426 callback
2427
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 @see WDI_PostAssocReq
2429 @return Result of the function call
2430*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002431WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002432WDI_SetSTAKeyReq
2433(
2434 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2435 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2436 void* pUserData
2437)
2438{
2439 WDI_EventInfoType wdiEventData;
2440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2441
2442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 ------------------------------------------------------------------------*/
2445 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2446 {
2447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2448 "WDI API call before module is initialized - Fail request");
2449
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 }
2452
2453 /*------------------------------------------------------------------------
2454 Fill in Event data and post to the Main FSM
2455 ------------------------------------------------------------------------*/
2456 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2458 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2459 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 wdiEventData.pUserData = pUserData;
2461
2462 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2463
2464}/*WDI_SetSTAKeyReq*/
2465
2466
2467/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 wants to uninstall a previously set STA key in HW. Upon
2470 the call of this API the WLAN DAL will pack and send a
2471 HAL Remove STA Key request message to the lower RIVA
2472 sub-system if DAL is in state STARTED.
2473
2474 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002476
2477 WDI_SetSTAKeyReq must have been called.
2478
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002481
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 wdiRemoveSTAKeyRspCb: callback for passing back the
2483 response of the remove STA key operation received from
2484 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002485
Jeff Johnson295189b2012-06-20 16:38:30 -07002486 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 callback
2488
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 @see WDI_SetSTAKeyReq
2490 @return Result of the function call
2491*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002492WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002493WDI_RemoveSTAKeyReq
2494(
2495 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2496 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2497 void* pUserData
2498)
2499{
2500 WDI_EventInfoType wdiEventData;
2501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2502
2503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 ------------------------------------------------------------------------*/
2506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2507 {
2508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2509 "WDI API call before module is initialized - Fail request");
2510
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 }
2513
2514 /*------------------------------------------------------------------------
2515 Fill in Event data and post to the Main FSM
2516 ------------------------------------------------------------------------*/
2517 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2519 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2520 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 wdiEventData.pUserData = pUserData;
2522
2523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2524
2525}/*WDI_RemoveSTAKeyReq*/
2526
2527
2528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 wants to install a STA Bcast encryption key on the HW.
2531 Upon the call of this API the WLAN DAL will pack and
2532 send a HAL Start request message to the lower RIVA
2533 sub-system if DAL is in state STARTED.
2534
2535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002537
2538 WDI_PostAssocReq must have been called.
2539
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002542
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 wdiSetSTABcastKeyRspCb: callback for passing back the
2544 response of the set BSS Key operation received from the
2545 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002546
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 callback
2549
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 @see WDI_PostAssocReq
2551 @return Result of the function call
2552*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002553WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002554WDI_SetSTABcastKeyReq
2555(
2556 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2557 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2558 void* pUserData
2559)
2560
2561{
2562 WDI_EventInfoType wdiEventData;
2563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2564
2565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 ------------------------------------------------------------------------*/
2568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2569 {
2570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2571 "WDI API call before module is initialized - Fail request");
2572
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 }
2575
2576 /*------------------------------------------------------------------------
2577 Fill in Event data and post to the Main FSM
2578 ------------------------------------------------------------------------*/
2579 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2581 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2582 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 wdiEventData.pUserData = pUserData;
2584
2585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2586
2587}/*WDI_SetSTABcastKeyReq*/
2588
2589/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 MAC wants to uninstall a STA Bcast key from HW. Upon the
2592 call of this API the WLAN DAL will pack and send a HAL
2593 Remove STA Bcast Key request message to the lower RIVA
2594 sub-system if DAL is in state STARTED.
2595
2596 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002598
2599 WDI_SetSTABcastKeyReq must have been called.
2600
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002602 parameters as specified by the Device
2603 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002604
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2606 response of the remove STA Bcast key operation received
2607 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002608
Jeff Johnson295189b2012-06-20 16:38:30 -07002609 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002610 callback
2611
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 @see WDI_SetSTABcastKeyReq
2613 @return Result of the function call
2614*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002615WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002616WDI_RemoveSTABcastKeyReq
2617(
2618 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2619 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2620 void* pUserData
2621)
2622{
2623 WDI_EventInfoType wdiEventData;
2624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2625
2626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 ------------------------------------------------------------------------*/
2629 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2630 {
2631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2632 "WDI API call before module is initialized - Fail request");
2633
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 }
2636
2637 /*------------------------------------------------------------------------
2638 Fill in Event data and post to the Main FSM
2639 ------------------------------------------------------------------------*/
2640 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2642 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2643 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 wdiEventData.pUserData = pUserData;
2645
2646 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2647
2648}/*WDI_RemoveSTABcastKeyReq*/
2649
2650/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 MAC wants to set Max Tx Power to HW. Upon the
2653 call of this API the WLAN DAL will pack and send a HAL
2654 Remove STA Bcast Key request message to the lower RIVA
2655 sub-system if DAL is in state STARTED.
2656
2657 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002659
2660 WDI_SetSTABcastKeyReq must have been called.
2661
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002663 parameters as specified by the Device
2664 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002665
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2667 response of the remove STA Bcast key operation received
2668 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002669
Jeff Johnson295189b2012-06-20 16:38:30 -07002670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002671 callback
2672
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 @see WDI_SetMaxTxPowerReq
2674 @return Result of the function call
2675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002677WDI_SetMaxTxPowerReq
2678(
2679 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2680 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2681 void* pUserData
2682)
2683{
2684 WDI_EventInfoType wdiEventData;
2685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2686
2687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 ------------------------------------------------------------------------*/
2690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2691 {
2692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2693 "WDI API call before module is initialized - Fail request");
2694
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002696 }
2697
2698 /*------------------------------------------------------------------------
2699 Fill in Event data and post to the Main FSM
2700 ------------------------------------------------------------------------*/
2701 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2703 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2704 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 wdiEventData.pUserData = pUserData;
2706
2707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2708}
2709
2710#ifdef FEATURE_WLAN_CCX
2711WDI_Status
2712WDI_TSMStatsReq
2713(
2714 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2715 WDI_TsmRspCb wdiReqStatusCb,
2716 void* pUserData
2717)
2718{
2719 WDI_EventInfoType wdiEventData;
2720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 /*------------------------------------------------------------------------
2722 Sanity Check
2723 ------------------------------------------------------------------------*/
2724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2725 {
2726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2727 "WDI API call before module is initialized - Fail request");
2728
2729 return WDI_STATUS_E_NOT_ALLOWED;
2730 }
2731
2732 /*------------------------------------------------------------------------
2733 Fill in Event data and post to the Main FSM
2734 ------------------------------------------------------------------------*/
2735 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2736 wdiEventData.pEventData = pwdiTsmReqParams;
2737 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2738 wdiEventData.pCBfnc = wdiReqStatusCb;
2739 wdiEventData.pUserData = pUserData;
2740
2741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2742
2743}
2744#endif
2745
2746/*========================================================================
2747
2748 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002749
Jeff Johnson295189b2012-06-20 16:38:30 -07002750==========================================================================*/
2751
2752/**
2753 @brief WDI_AddTSReq will be called when the upper MAC to inform
2754 the device of a successful add TSpec negotiation. HW
2755 needs to receive the TSpec Info from the UMAC in order
2756 to configure properly the QoS data traffic. Upon the
2757 call of this API the WLAN DAL will pack and send a HAL
2758 Add TS request message to the lower RIVA sub-system if
2759 DAL is in state STARTED.
2760
2761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002763
2764 WDI_PostAssocReq must have been called.
2765
2766 @param wdiAddTsReqParams: the add TS parameters as specified by
2767 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002768
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 wdiAddTsRspCb: callback for passing back the response of
2770 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002771
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 callback
2774
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 @see WDI_PostAssocReq
2776 @return Result of the function call
2777*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002778WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002779WDI_AddTSReq
2780(
2781 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2782 WDI_AddTsRspCb wdiAddTsRspCb,
2783 void* pUserData
2784)
2785{
2786 WDI_EventInfoType wdiEventData;
2787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2788
2789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 ------------------------------------------------------------------------*/
2792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2793 {
2794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2795 "WDI API call before module is initialized - Fail request");
2796
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 }
2799
2800 /*------------------------------------------------------------------------
2801 Fill in Event data and post to the Main FSM
2802 ------------------------------------------------------------------------*/
2803 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002804 wdiEventData.pEventData = pwdiAddTsReqParams;
2805 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2806 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 wdiEventData.pUserData = pUserData;
2808
2809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2810
2811}/*WDI_AddTSReq*/
2812
2813
2814
2815/**
2816 @brief WDI_DelTSReq will be called when the upper MAC has ended
2817 admission on a specific AC. This is to inform HW that
2818 QoS traffic parameters must be rest. Upon the call of
2819 this API the WLAN DAL will pack and send a HAL Del TS
2820 request message to the lower RIVA sub-system if DAL is
2821 in state STARTED.
2822
2823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002825
2826 WDI_AddTSReq must have been called.
2827
2828 @param wdiDelTsReqParams: the del TS parameters as specified by
2829 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002830
Jeff Johnson295189b2012-06-20 16:38:30 -07002831 wdiDelTsRspCb: callback for passing back the response of
2832 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002833
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 callback
2836
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 @see WDI_AddTSReq
2838 @return Result of the function call
2839*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002840WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002841WDI_DelTSReq
2842(
2843 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2844 WDI_DelTsRspCb wdiDelTsRspCb,
2845 void* pUserData
2846)
2847{
2848 WDI_EventInfoType wdiEventData;
2849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2850
2851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 ------------------------------------------------------------------------*/
2854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2855 {
2856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2857 "WDI API call before module is initialized - Fail request");
2858
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 }
2861
2862 /*------------------------------------------------------------------------
2863 Fill in Event data and post to the Main FSM
2864 ------------------------------------------------------------------------*/
2865 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002866 wdiEventData.pEventData = pwdiDelTsReqParams;
2867 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2868 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 wdiEventData.pUserData = pUserData;
2870
2871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2872
2873}/*WDI_DelTSReq*/
2874
2875
2876
2877/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002878 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wishes to update the EDCA parameters used by HW for QoS
2880 data traffic. Upon the call of this API the WLAN DAL
2881 will pack and send a HAL Update EDCA Params request
2882 message to the lower RIVA sub-system if DAL is in state
2883 STARTED.
2884
2885 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002887
2888 WDI_PostAssocReq must have been called.
2889
Jeff Johnsone7245742012-09-05 17:12:55 -07002890 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002891 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002892
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 wdiUpdateEDCAParamsRspCb: callback for passing back the
2894 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 callback
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 @see WDI_PostAssocReq
2900 @return Result of the function call
2901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002903WDI_UpdateEDCAParams
2904(
2905 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2906 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2930 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934
2935}/*WDI_UpdateEDCAParams*/
2936
2937
2938/**
2939 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2940 successfully a BA session and needs to notify the HW for
2941 the appropriate settings to take place. Upon the call of
2942 this API the WLAN DAL will pack and send a HAL Add BA
2943 request message to the lower RIVA sub-system if DAL is
2944 in state STARTED.
2945
2946 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002948
2949 WDI_PostAssocReq must have been called.
2950
2951 @param wdiAddBAReqParams: the add BA parameters as specified by
2952 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002953
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 wdiAddBARspCb: callback for passing back the response of
2955 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 callback
2959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 @see WDI_PostAssocReq
2961 @return Result of the function call
2962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002964WDI_AddBASessionReq
2965(
2966 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2967 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2968 void* pUserData
2969)
2970{
2971 WDI_EventInfoType wdiEventData;
2972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2973
2974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 ------------------------------------------------------------------------*/
2977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2978 {
2979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2980 "WDI API call before module is initialized - Fail request");
2981
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 }
2984
2985 /*------------------------------------------------------------------------
2986 Fill in Event data and post to the Main FSM
2987 ------------------------------------------------------------------------*/
2988 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2990 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2991 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiEventData.pUserData = pUserData;
2993
2994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2995
2996}/*WDI_AddBASessionReq*/
2997
2998/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003000 inform HW that it has deleted a previously created BA
3001 session. Upon the call of this API the WLAN DAL will
3002 pack and send a HAL Del BA request message to the lower
3003 RIVA sub-system if DAL is in state STARTED.
3004
3005 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003006 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003007
3008 WDI_AddBAReq must have been called.
3009
3010 @param wdiDelBAReqParams: the del BA parameters as specified by
3011 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003012
Jeff Johnson295189b2012-06-20 16:38:30 -07003013 wdiDelBARspCb: callback for passing back the response of
3014 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003015
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 callback
3018
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 @see WDI_AddBAReq
3020 @return Result of the function call
3021*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003023WDI_DelBAReq
3024(
3025 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3026 WDI_DelBARspCb wdiDelBARspCb,
3027 void* pUserData
3028)
3029{
3030 WDI_EventInfoType wdiEventData;
3031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3032
3033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003035 ------------------------------------------------------------------------*/
3036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3037 {
3038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3039 "WDI API call before module is initialized - Fail request");
3040
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 }
3043
3044 /*------------------------------------------------------------------------
3045 Fill in Event data and post to the Main FSM
3046 ------------------------------------------------------------------------*/
3047 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 wdiEventData.pEventData = pwdiDelBAReqParams;
3049 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3050 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 wdiEventData.pUserData = pUserData;
3052
3053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3054
3055}/*WDI_DelBAReq*/
3056
Jeff Johnsone7245742012-09-05 17:12:55 -07003057/*========================================================================
3058
Jeff Johnson295189b2012-06-20 16:38:30 -07003059 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003060
Jeff Johnson295189b2012-06-20 16:38:30 -07003061==========================================================================*/
3062
3063/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 wants to set the power save related configurations of
3066 the WLAN Device. Upon the call of this API the WLAN DAL
3067 will pack and send a HAL Update CFG request message to
3068 the lower RIVA sub-system if DAL is in state STARTED.
3069
3070 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003072
3073 WDI_Start must have been called.
3074
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003076 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003077
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 wdiSetPwrSaveCfgCb: callback for passing back the
3079 response of the set power save cfg operation received
3080 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 callback
3084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 @return Result of the function call
3087*/
3088WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003089WDI_SetPwrSaveCfgReq
3090(
3091 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3092 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3093 void* pUserData
3094)
3095{
3096 WDI_EventInfoType wdiEventData;
3097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3098
3099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 ------------------------------------------------------------------------*/
3102 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3103 {
3104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3105 "WDI API call before module is initialized - Fail request");
3106
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003108 }
3109
3110 /*------------------------------------------------------------------------
3111 Fill in Event data and post to the Main FSM
3112 ------------------------------------------------------------------------*/
3113 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 wdiEventData.pEventData = pwdiPowerSaveCfg;
3115 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3116 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wdiEventData.pUserData = pUserData;
3118
3119 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3120
3121}/*WDI_SetPwrSaveCfgReq*/
3122
3123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003125 request the device to get into IMPS power state. Upon
3126 the call of this API the WLAN DAL will send a HAL Enter
3127 IMPS request message to the lower RIVA sub-system if DAL
3128 is in state STARTED.
3129
3130 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003132
Jeff Johnsone7245742012-09-05 17:12:55 -07003133
3134 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 response of the Enter IMPS operation received from the
3136 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003137
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 callback
3140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 @see WDI_Start
3142 @return Result of the function call
3143*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003145WDI_EnterImpsReq
3146(
3147 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3148 void* pUserData
3149)
3150{
3151 WDI_EventInfoType wdiEventData;
3152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3153
3154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 ------------------------------------------------------------------------*/
3157 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3158 {
3159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3160 "WDI API call before module is initialized - Fail request");
3161
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003163 }
3164
3165 /*------------------------------------------------------------------------
3166 Fill in Event data and post to the Main FSM
3167 ------------------------------------------------------------------------*/
3168 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 wdiEventData.pEventData = NULL;
3170 wdiEventData.uEventDataSize = 0;
3171 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 wdiEventData.pUserData = pUserData;
3173
3174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3175
3176}/*WDI_EnterImpsReq*/
3177
3178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 request the device to get out of IMPS power state. Upon
3181 the call of this API the WLAN DAL will send a HAL Exit
3182 IMPS request message to the lower RIVA sub-system if DAL
3183 is in state STARTED.
3184
3185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003187
Jeff Johnson295189b2012-06-20 16:38:30 -07003188
Jeff Johnsone7245742012-09-05 17:12:55 -07003189
3190 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003192
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 callback
3195
Jeff Johnson295189b2012-06-20 16:38:30 -07003196 @see WDI_Start
3197 @return Result of the function call
3198*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003199WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003200WDI_ExitImpsReq
3201(
3202 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3203 void* pUserData
3204)
3205{
3206 WDI_EventInfoType wdiEventData;
3207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3208
3209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 ------------------------------------------------------------------------*/
3212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3213 {
3214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3215 "WDI API call before module is initialized - Fail request");
3216
Jeff Johnsone7245742012-09-05 17:12:55 -07003217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 }
3219
3220 /*------------------------------------------------------------------------
3221 Fill in Event data and post to the Main FSM
3222 ------------------------------------------------------------------------*/
3223 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 wdiEventData.pEventData = NULL;
3225 wdiEventData.uEventDataSize = 0;
3226 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiEventData.pUserData = pUserData;
3228
3229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3230
3231}/*WDI_ExitImpsReq*/
3232
3233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 request the device to get into BMPS power state. Upon
3236 the call of this API the WLAN DAL will pack and send a
3237 HAL Enter BMPS request message to the lower RIVA
3238 sub-system if DAL is in state STARTED.
3239
3240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003242
3243 WDI_PostAssocReq must have been called.
3244
Jeff Johnsone7245742012-09-05 17:12:55 -07003245 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 wdiEnterBmpsRspCb: callback for passing back the
3249 response of the Enter BMPS operation received from the
3250 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003251
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003253 callback
3254
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 @see WDI_PostAssocReq
3256 @return Result of the function call
3257*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003258WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003259WDI_EnterBmpsReq
3260(
3261 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3262 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3263 void* pUserData
3264)
3265{
3266 WDI_EventInfoType wdiEventData;
3267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3268
3269 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 ------------------------------------------------------------------------*/
3272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3273 {
3274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3275 "WDI API call before module is initialized - Fail request");
3276
Jeff Johnsone7245742012-09-05 17:12:55 -07003277 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003278 }
3279
3280 /*------------------------------------------------------------------------
3281 Fill in Event data and post to the Main FSM
3282 ------------------------------------------------------------------------*/
3283 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3285 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3286 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 wdiEventData.pUserData = pUserData;
3288
3289 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3290
3291}/*WDI_EnterBmpsReq*/
3292
3293/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003294 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003295 request the device to get out of BMPS power state. Upon
3296 the call of this API the WLAN DAL will pack and send a
3297 HAL Exit BMPS request message to the lower RIVA
3298 sub-system if DAL is in state STARTED.
3299
3300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003302
3303 WDI_PostAssocReq must have been called.
3304
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003307
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 wdiExitBmpsRspCb: callback for passing back the response
3309 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003310
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 callback
3313
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 @see WDI_PostAssocReq
3315 @return Result of the function call
3316*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003317WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003318WDI_ExitBmpsReq
3319(
3320 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3321 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3322 void* pUserData
3323)
3324{
3325 WDI_EventInfoType wdiEventData;
3326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3327
3328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 ------------------------------------------------------------------------*/
3331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3332 {
3333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3334 "WDI API call before module is initialized - Fail request");
3335
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003337 }
3338
3339 /*------------------------------------------------------------------------
3340 Fill in Event data and post to the Main FSM
3341 ------------------------------------------------------------------------*/
3342 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3344 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3345 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 wdiEventData.pUserData = pUserData;
3347
3348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3349
3350}/*WDI_ExitBmpsReq*/
3351
3352/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003353 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003354 request the device to get into UAPSD power state. Upon
3355 the call of this API the WLAN DAL will pack and send a
3356 HAL Enter UAPSD request message to the lower RIVA
3357 sub-system if DAL is in state STARTED.
3358
3359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003361
3362 WDI_PostAssocReq must have been called.
3363 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
3365 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003366 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 wdiEnterUapsdRspCb: callback for passing back the
3369 response of the Enter UAPSD operation received from the
3370 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003371
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 callback
3374
Jeff Johnson295189b2012-06-20 16:38:30 -07003375 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3376 @return Result of the function call
3377*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003378WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003379WDI_EnterUapsdReq
3380(
3381 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3382 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3383 void* pUserData
3384)
3385{
3386 WDI_EventInfoType wdiEventData;
3387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3388
3389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 ------------------------------------------------------------------------*/
3392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3393 {
3394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3395 "WDI API call before module is initialized - Fail request");
3396
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 }
3399
3400 /*------------------------------------------------------------------------
3401 Fill in Event data and post to the Main FSM
3402 ------------------------------------------------------------------------*/
3403 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3405 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3406 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 wdiEventData.pUserData = pUserData;
3408
3409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3410
3411}/*WDI_EnterUapsdReq*/
3412
3413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 request the device to get out of UAPSD power state. Upon
3416 the call of this API the WLAN DAL will send a HAL Exit
3417 UAPSD request message to the lower RIVA sub-system if
3418 DAL is in state STARTED.
3419
3420 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003422
3423 WDI_PostAssocReq must have been called.
3424
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 response of the Exit UAPSD operation received from the
3427 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003428
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 callback
3431
Jeff Johnson295189b2012-06-20 16:38:30 -07003432 @see WDI_PostAssocReq
3433 @return Result of the function call
3434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003436WDI_ExitUapsdReq
3437(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003438 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3440 void* pUserData
3441)
3442{
3443 WDI_EventInfoType wdiEventData;
3444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3445
3446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 ------------------------------------------------------------------------*/
3449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3450 {
3451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3452 "WDI API call before module is initialized - Fail request");
3453
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 }
3456
3457 /*------------------------------------------------------------------------
3458 Fill in Event data and post to the Main FSM
3459 ------------------------------------------------------------------------*/
3460 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003461 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3462 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 wdiEventData.pUserData = pUserData;
3465
3466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3467
3468}/*WDI_ExitUapsdReq*/
3469
3470/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 MAC wants to set the UAPSD related configurations
3473 of an associated STA (while acting as an AP) to the WLAN
3474 Device. Upon the call of this API the WLAN DAL will pack
3475 and send a HAL Update UAPSD params request message to
3476 the lower RIVA sub-system if DAL is in state STARTED.
3477
3478 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003480
3481 WDI_ConfigBSSReq must have been called.
3482
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003485
Jeff Johnson295189b2012-06-20 16:38:30 -07003486 wdiUpdateUapsdParamsCb: callback for passing back the
3487 response of the update UAPSD params operation received
3488 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003489
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 callback
3492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 @see WDI_ConfigBSSReq
3494 @return Result of the function call
3495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003497WDI_UpdateUapsdParamsReq
3498(
3499 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3500 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3501 void* pUserData
3502)
3503{
3504 WDI_EventInfoType wdiEventData;
3505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3506
3507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 ------------------------------------------------------------------------*/
3510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3511 {
3512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3513 "WDI API call before module is initialized - Fail request");
3514
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 }
3517
3518 /*------------------------------------------------------------------------
3519 Fill in Event data and post to the Main FSM
3520 ------------------------------------------------------------------------*/
3521 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003523 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 wdiEventData.pUserData = pUserData;
3526
3527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3528
3529}/*WDI_UpdateUapsdParamsReq*/
3530
3531/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003532 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 MAC wants to set the UAPSD related configurations before
3534 requesting for enter UAPSD power state to the WLAN
3535 Device. Upon the call of this API the WLAN DAL will pack
3536 and send a HAL Set UAPSD params request message to
3537 the lower RIVA sub-system if DAL is in state STARTED.
3538
3539 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003540 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003541
3542 WDI_PostAssocReq must have been called.
3543
3544 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3545 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003546
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 wdiSetUapsdAcParamsCb: callback for passing back the
3548 response of the set UAPSD params operation received from
3549 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003550
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 callback
3553
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 @see WDI_PostAssocReq
3555 @return Result of the function call
3556*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003557WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003558WDI_SetUapsdAcParamsReq
3559(
3560 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3561 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3562 void* pUserData
3563)
3564{
3565 WDI_EventInfoType wdiEventData;
3566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3567
3568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 ------------------------------------------------------------------------*/
3571 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3572 {
3573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3574 "WDI API call before module is initialized - Fail request");
3575
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 }
3578
3579 /*------------------------------------------------------------------------
3580 Fill in Event data and post to the Main FSM
3581 ------------------------------------------------------------------------*/
3582 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 wdiEventData.pEventData = pwdiUapsdInfo;
3584 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3585 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiEventData.pUserData = pUserData;
3587
3588 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3589
3590}/*WDI_SetUapsdAcParamsReq*/
3591
3592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003594 MAC wants to set/reset the RXP filters for received pkts
3595 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3596 and send a HAL configure RXP filter request message to
3597 the lower RIVA sub-system.
3598
3599 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003600 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003601
Jeff Johnsone7245742012-09-05 17:12:55 -07003602
3603 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 filter as specified by the Device
3605 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003606
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 wdiConfigureRxpFilterCb: callback for passing back the
3608 response of the configure RXP filter operation received
3609 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003610
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 callback
3613
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 @return Result of the function call
3615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003617WDI_ConfigureRxpFilterReq
3618(
3619 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3620 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3621 void* pUserData
3622)
3623{
3624 WDI_EventInfoType wdiEventData;
3625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3626
3627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 ------------------------------------------------------------------------*/
3630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3631 {
3632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3633 "WDI API call before module is initialized - Fail request");
3634
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 }
3637
3638 /*------------------------------------------------------------------------
3639 Fill in Event data and post to the Main FSM
3640 ------------------------------------------------------------------------*/
3641 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003642 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3643 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3644 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiEventData.pUserData = pUserData;
3646
3647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3648}/*WDI_ConfigureRxpFilterReq*/
3649
3650/**
3651 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3652 wants to set the beacon filters while in power save.
3653 Upon the call of this API the WLAN DAL will pack and
3654 send a Beacon filter request message to the
3655 lower RIVA sub-system.
3656
3657 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003659
Jeff Johnsone7245742012-09-05 17:12:55 -07003660
3661 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003662 filter as specified by the Device
3663 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003664
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 wdiBeaconFilterCb: callback for passing back the
3666 response of the set beacon filter operation received
3667 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003668
Jeff Johnson295189b2012-06-20 16:38:30 -07003669 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 callback
3671
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 @return Result of the function call
3673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003675WDI_SetBeaconFilterReq
3676(
3677 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3678 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3679 void* pUserData
3680)
3681{
3682 WDI_EventInfoType wdiEventData;
3683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3684
3685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 ------------------------------------------------------------------------*/
3688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3689 {
3690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3691 "WDI API call before module is initialized - Fail request");
3692
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 }
3695
3696 /*------------------------------------------------------------------------
3697 Fill in Event data and post to the Main FSM
3698 ------------------------------------------------------------------------*/
3699 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003701 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 wdiEventData.pUserData = pUserData;
3704
3705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3706}/*WDI_SetBeaconFilterReq*/
3707
3708/**
3709 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3710 wants to remove the beacon filter for particular IE
3711 while in power save. Upon the call of this API the WLAN
3712 DAL will pack and send a remove Beacon filter request
3713 message to the lower RIVA sub-system.
3714
3715 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003716 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003717
Jeff Johnsone7245742012-09-05 17:12:55 -07003718
3719 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 filter as specified by the Device
3721 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003722
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 wdiBeaconFilterCb: callback for passing back the
3724 response of the remove beacon filter operation received
3725 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 callback
3729
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 @return Result of the function call
3731*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003732WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003733WDI_RemBeaconFilterReq
3734(
3735 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3736 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3737 void* pUserData
3738)
3739{
3740 WDI_EventInfoType wdiEventData;
3741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3742
3743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003745 ------------------------------------------------------------------------*/
3746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3747 {
3748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3749 "WDI API call before module is initialized - Fail request");
3750
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 }
3753
3754 /*------------------------------------------------------------------------
3755 Fill in Event data and post to the Main FSM
3756 ------------------------------------------------------------------------*/
3757 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003759 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wdiEventData.pUserData = pUserData;
3762
3763 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3764}/*WDI_RemBeaconFilterReq*/
3765
3766/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 MAC wants to set the RSSI thresholds related
3769 configurations while in power save. Upon the call of
3770 this API the WLAN DAL will pack and send a HAL Set RSSI
3771 thresholds request message to the lower RIVA
3772 sub-system if DAL is in state STARTED.
3773
3774 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003775 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003776
3777 WDI_PostAssocReq must have been called.
3778
3779 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3780 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003781
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 wdiSetUapsdAcParamsCb: callback for passing back the
3783 response of the set UAPSD params operation received from
3784 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003785
Jeff Johnson295189b2012-06-20 16:38:30 -07003786 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 callback
3788
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 @see WDI_PostAssocReq
3790 @return Result of the function call
3791*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003792WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003793WDI_SetRSSIThresholdsReq
3794(
3795 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3796 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3797 void* pUserData
3798)
3799{
3800 WDI_EventInfoType wdiEventData;
3801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3802
3803 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 ------------------------------------------------------------------------*/
3806 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3807 {
3808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3809 "WDI API call before module is initialized - Fail request");
3810
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 }
3813
3814 /*------------------------------------------------------------------------
3815 Fill in Event data and post to the Main FSM
3816 ------------------------------------------------------------------------*/
3817 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003819 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 wdiEventData.pUserData = pUserData;
3822
3823 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3824}/* WDI_SetRSSIThresholdsReq*/
3825
3826/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 wants to set the filter to minimize unnecessary host
3829 wakeup due to broadcast traffic while in power save.
3830 Upon the call of this API the WLAN DAL will pack and
3831 send a HAL host offload request message to the
3832 lower RIVA sub-system if DAL is in state STARTED.
3833
3834 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003836
3837 WDI_PostAssocReq must have been called.
3838
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003841
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 wdiHostOffloadCb: callback for passing back the response
3843 of the host offload operation received from the
3844 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003845
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 callback
3848
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 @see WDI_PostAssocReq
3850 @return Result of the function call
3851*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003852WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003853WDI_HostOffloadReq
3854(
3855 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3856 WDI_HostOffloadCb wdiHostOffloadCb,
3857 void* pUserData
3858)
3859{
3860 WDI_EventInfoType wdiEventData;
3861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3862
3863 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 ------------------------------------------------------------------------*/
3866 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3867 {
3868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3869 "WDI API call before module is initialized - Fail request");
3870
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 }
3873
3874 /*------------------------------------------------------------------------
3875 Fill in Event data and post to the Main FSM
3876 ------------------------------------------------------------------------*/
3877 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003879 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003880 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 wdiEventData.pUserData = pUserData;
3882
3883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3884}/*WDI_HostOffloadReq*/
3885
3886/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 @brief WDI_KeepAliveReq will be called when the upper MAC
3888 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 and minimize unnecessary host wakeups due to while in power save.
3890 Upon the call of this API the WLAN DAL will pack and
3891 send a HAL Keep Alive request message to the
3892 lower RIVA sub-system if DAL is in state STARTED.
3893
3894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003896
3897 WDI_PostAssocReq must have been called.
3898
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 wdiKeepAliveCb: callback for passing back the response
3903 of the Keep Alive operation received from the
3904 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003905
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 callback
3908
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 @see WDI_PostAssocReq
3910 @return Result of the function call
3911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003913WDI_KeepAliveReq
3914(
3915 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3916 WDI_KeepAliveCb wdiKeepAliveCb,
3917 void* pUserData
3918)
3919{
3920 WDI_EventInfoType wdiEventData;
3921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3922
3923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 ------------------------------------------------------------------------*/
3926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3927 {
3928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3929 "WDI_KeepAliveReq: WDI API call before module "
3930 "is initialized - Fail request");
3931
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 }
3934
3935 /*------------------------------------------------------------------------
3936 Fill in Event data and post to the Main FSM
3937 ------------------------------------------------------------------------*/
3938 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 wdiEventData.pEventData = pwdiKeepAliveParams;
3940 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3941 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiEventData.pUserData = pUserData;
3943
3944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3945}/*WDI_KeepAliveReq*/
3946
3947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003948 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 wants to set the Wowl Bcast ptrn to minimize unnecessary
3950 host wakeup due to broadcast traffic while in power
3951 save. Upon the call of this API the WLAN DAL will pack
3952 and send a HAL Wowl Bcast ptrn request message to the
3953 lower RIVA sub-system if DAL is in state STARTED.
3954
3955 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003957
3958 WDI_PostAssocReq must have been called.
3959
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 wdiWowlAddBcPtrnCb: callback for passing back the
3964 response of the add Wowl bcast ptrn operation received
3965 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003966
Jeff Johnson295189b2012-06-20 16:38:30 -07003967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 callback
3969
Jeff Johnson295189b2012-06-20 16:38:30 -07003970 @see WDI_PostAssocReq
3971 @return Result of the function call
3972*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003974WDI_WowlAddBcPtrnReq
3975(
3976 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3977 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3978 void* pUserData
3979)
3980{
3981 WDI_EventInfoType wdiEventData;
3982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3983
3984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 ------------------------------------------------------------------------*/
3987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3988 {
3989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3990 "WDI API call before module is initialized - Fail request");
3991
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 }
3994
3995 /*------------------------------------------------------------------------
3996 Fill in Event data and post to the Main FSM
3997 ------------------------------------------------------------------------*/
3998 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004000 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiEventData.pUserData = pUserData;
4003
4004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4005}/*WDI_WowlAddBcPtrnReq*/
4006
4007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 wants to clear the Wowl Bcast ptrn. Upon the call of
4010 this API the WLAN DAL will pack and send a HAL delete
4011 Wowl Bcast ptrn request message to the lower RIVA
4012 sub-system if DAL is in state STARTED.
4013
4014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004016
4017 WDI_WowlAddBcPtrnReq must have been called.
4018
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004021
Jeff Johnson295189b2012-06-20 16:38:30 -07004022 wdiWowlDelBcPtrnCb: callback for passing back the
4023 response of the del Wowl bcast ptrn operation received
4024 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004025
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 callback
4028
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 @see WDI_WowlAddBcPtrnReq
4030 @return Result of the function call
4031*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004033WDI_WowlDelBcPtrnReq
4034(
4035 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4036 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4037 void* pUserData
4038)
4039{
4040 WDI_EventInfoType wdiEventData;
4041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4042
4043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 ------------------------------------------------------------------------*/
4046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4047 {
4048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4049 "WDI API call before module is initialized - Fail request");
4050
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 }
4053
4054 /*------------------------------------------------------------------------
4055 Fill in Event data and post to the Main FSM
4056 ------------------------------------------------------------------------*/
4057 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004059 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wdiEventData.pUserData = pUserData;
4062
4063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4064}/*WDI_WowlDelBcPtrnReq*/
4065
4066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 wants to enter the Wowl state to minimize unnecessary
4069 host wakeup while in power save. Upon the call of this
4070 API the WLAN DAL will pack and send a HAL Wowl enter
4071 request message to the lower RIVA sub-system if DAL is
4072 in state STARTED.
4073
4074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004076
4077 WDI_PostAssocReq must have been called.
4078
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004081
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 wdiWowlEnterReqCb: callback for passing back the
4083 response of the enter Wowl operation received from the
4084 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004085
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 callback
4088
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 @see WDI_PostAssocReq
4090 @return Result of the function call
4091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004093WDI_WowlEnterReq
4094(
4095 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4096 WDI_WowlEnterReqCb wdiWowlEnterCb,
4097 void* pUserData
4098)
4099{
4100 WDI_EventInfoType wdiEventData;
4101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4102
4103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 ------------------------------------------------------------------------*/
4106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4107 {
4108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4109 "WDI API call before module is initialized - Fail request");
4110
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 }
4113
4114 /*------------------------------------------------------------------------
4115 Fill in Event data and post to the Main FSM
4116 ------------------------------------------------------------------------*/
4117 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004119 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004120 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 wdiEventData.pUserData = pUserData;
4122
4123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4124}/*WDI_WowlEnterReq*/
4125
4126/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 wants to exit the Wowl state. Upon the call of this API
4129 the WLAN DAL will pack and send a HAL Wowl exit request
4130 message to the lower RIVA sub-system if DAL is in state
4131 STARTED.
4132
4133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004135
4136 WDI_WowlEnterReq must have been called.
4137
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004140
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 wdiWowlExitReqCb: callback for passing back the response
4142 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004143
Jeff Johnson295189b2012-06-20 16:38:30 -07004144 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 callback
4146
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 @see WDI_WowlEnterReq
4148 @return Result of the function call
4149*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004150WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004151WDI_WowlExitReq
4152(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004153 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 WDI_WowlExitReqCb wdiWowlExitCb,
4155 void* pUserData
4156)
4157{
4158 WDI_EventInfoType wdiEventData;
4159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4160
4161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 ------------------------------------------------------------------------*/
4164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4165 {
4166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4167 "WDI API call before module is initialized - Fail request");
4168
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 }
4171
4172 /*------------------------------------------------------------------------
4173 Fill in Event data and post to the Main FSM
4174 ------------------------------------------------------------------------*/
4175 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004176 wdiEventData.pEventData = pwdiWowlExitParams;
4177 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 wdiEventData.pUserData = pUserData;
4180
4181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4182}/*WDI_WowlExitReq*/
4183
4184/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004185 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 the upper MAC wants to dynamically adjusts the listen
4187 interval based on the WLAN/MSM activity. Upon the call
4188 of this API the WLAN DAL will pack and send a HAL
4189 configure Apps Cpu Wakeup State request message to the
4190 lower RIVA sub-system.
4191
4192 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004194
Jeff Johnsone7245742012-09-05 17:12:55 -07004195
4196 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004197 Apps Cpu Wakeup State as specified by the
4198 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004199
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4201 back the response of the configure Apps Cpu Wakeup State
4202 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004203
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 callback
4206
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 @return Result of the function call
4208*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004209WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004210WDI_ConfigureAppsCpuWakeupStateReq
4211(
4212 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4213 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4214 void* pUserData
4215)
4216{
4217 WDI_EventInfoType wdiEventData;
4218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4219
4220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 ------------------------------------------------------------------------*/
4223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4224 {
4225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4226 "WDI API call before module is initialized - Fail request");
4227
Jeff Johnsone7245742012-09-05 17:12:55 -07004228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004229 }
4230
4231 /*------------------------------------------------------------------------
4232 Fill in Event data and post to the Main FSM
4233 ------------------------------------------------------------------------*/
4234 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004235 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4236 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4237 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 wdiEventData.pUserData = pUserData;
4239
4240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4241}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 to to perform a flush operation on a given AC. Upon the
4245 call of this API the WLAN DAL will pack and send a HAL
4246 Flush AC request message to the lower RIVA sub-system if
4247 DAL is in state STARTED.
4248
4249 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004251
4252 WDI_AddBAReq must have been called.
4253
Jeff Johnsone7245742012-09-05 17:12:55 -07004254 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004256
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 wdiFlushAcRspCb: callback for passing back the response
4258 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004259
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 callback
4262
Jeff Johnson295189b2012-06-20 16:38:30 -07004263 @see WDI_AddBAReq
4264 @return Result of the function call
4265*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004266WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004267WDI_FlushAcReq
4268(
4269 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4270 WDI_FlushAcRspCb wdiFlushAcRspCb,
4271 void* pUserData
4272)
4273{
4274 WDI_EventInfoType wdiEventData;
4275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4276
4277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 ------------------------------------------------------------------------*/
4280 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4281 {
4282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4283 "WDI API call before module is initialized - Fail request");
4284
Jeff Johnsone7245742012-09-05 17:12:55 -07004285 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004286 }
4287
4288 /*------------------------------------------------------------------------
4289 Fill in Event data and post to the Main FSM
4290 ------------------------------------------------------------------------*/
4291 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004292 wdiEventData.pEventData = pwdiFlushAcReqParams;
4293 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4294 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 wdiEventData.pUserData = pUserData;
4296
4297 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4298
4299}/*WDI_FlushAcReq*/
4300
4301/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 wants to notify the lower mac on a BT AMP event. This is
4304 to inform BTC-SLM that some BT AMP event occurred. Upon
4305 the call of this API the WLAN DAL will pack and send a
4306 HAL BT AMP event request message to the lower RIVA
4307 sub-system if DAL is in state STARTED.
4308
4309 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004310 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004311
Jeff Johnsone7245742012-09-05 17:12:55 -07004312
4313 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004314 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004315
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 wdiBtAmpEventRspCb: callback for passing back the
4317 response of the BT AMP event operation received from the
4318 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004319
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004321 callback
4322
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 @return Result of the function call
4324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004326WDI_BtAmpEventReq
4327(
4328 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4329 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4330 void* pUserData
4331)
4332{
4333 WDI_EventInfoType wdiEventData;
4334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4335
4336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 ------------------------------------------------------------------------*/
4339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4340 {
4341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4342 "WDI API call before module is initialized - Fail request");
4343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 }
4346
4347 /*------------------------------------------------------------------------
4348 Fill in Event data and post to the Main FSM
4349 ------------------------------------------------------------------------*/
4350 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4352 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4353 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wdiEventData.pUserData = pUserData;
4355
4356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4357
4358}/*WDI_BtAmpEventReq*/
4359
Jeff Johnsone7245742012-09-05 17:12:55 -07004360#ifdef FEATURE_OEM_DATA_SUPPORT
4361/**
4362 @brief WDI_Start Oem Data Req will be called when the upper MAC
4363 wants to notify the lower mac on a oem data Req event.Upon
4364 the call of this API the WLAN DAL will pack and send a
4365 HAL OEM Data Req event request message to the lower RIVA
4366 sub-system if DAL is in state STARTED.
4367
4368 In state BUSY this request will be queued. Request won't
4369 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004370
4371
Jeff Johnsone7245742012-09-05 17:12:55 -07004372
4373 @param pwdiOemDataReqParams: the Oem Data Req as
4374 specified by the Device Interface
4375
4376 wdiStartOemDataRspCb: callback for passing back the
4377 response of the Oem Data Req received from the
4378 device
4379
4380 pUserData: user data will be passed back with the
4381 callback
4382
4383 @return Result of the function call
4384*/
4385WDI_Status
4386WDI_StartOemDataReq
4387(
4388 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4389 WDI_oemDataRspCb wdiOemDataRspCb,
4390 void* pUserData
4391)
4392{
4393 WDI_EventInfoType wdiEventData;
4394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4395
4396 /*------------------------------------------------------------------------
4397 Sanity Check
4398 ------------------------------------------------------------------------*/
4399 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4400 {
4401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4402 "WDI API call before module is initialized - Fail request");
4403
4404 return WDI_STATUS_E_NOT_ALLOWED;
4405 }
4406
4407 /*------------------------------------------------------------------------
4408 Fill in Event data and post to the Main FSM
4409 ------------------------------------------------------------------------*/
4410 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4411 wdiEventData.pEventData = pwdiOemDataReqParams;
4412 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4413 wdiEventData.pCBfnc = wdiOemDataRspCb;
4414 wdiEventData.pUserData = pUserData;
4415
4416 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4417
4418
4419}
4420
4421#endif
4422
4423
4424/*========================================================================
4425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004427
Jeff Johnson295189b2012-06-20 16:38:30 -07004428==========================================================================*/
4429/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004430 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 the WLAN HW to change the current channel of operation.
4432 Upon the call of this API the WLAN DAL will pack and
4433 send a HAL Start request message to the lower RIVA
4434 sub-system if DAL is in state STARTED.
4435
4436 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004438
4439 WDI_Start must have been called.
4440
Jeff Johnsone7245742012-09-05 17:12:55 -07004441 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004443
Jeff Johnson295189b2012-06-20 16:38:30 -07004444 wdiSwitchChRspCb: callback for passing back the response
4445 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004446
Jeff Johnson295189b2012-06-20 16:38:30 -07004447 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004448 callback
4449
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 @see WDI_Start
4451 @return Result of the function call
4452*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004453WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004454WDI_SwitchChReq
4455(
4456 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4457 WDI_SwitchChRspCb wdiSwitchChRspCb,
4458 void* pUserData
4459)
4460{
4461 WDI_EventInfoType wdiEventData;
4462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4463
4464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004465 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 ------------------------------------------------------------------------*/
4467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4468 {
4469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4470 "WDI API call before module is initialized - Fail request");
4471
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 }
4474
4475 /*------------------------------------------------------------------------
4476 Fill in Event data and post to the Main FSM
4477 ------------------------------------------------------------------------*/
4478 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 wdiEventData.pEventData = pwdiSwitchChReqParams;
4480 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4481 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 wdiEventData.pUserData = pUserData;
4483
4484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4485
4486}/*WDI_SwitchChReq*/
4487
4488
4489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 wishes to add or update a STA in HW. Upon the call of
4492 this API the WLAN DAL will pack and send a HAL Start
4493 message request message to the lower RIVA sub-system if
4494 DAL is in state STARTED.
4495
4496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004498
4499 WDI_Start must have been called.
4500
Jeff Johnsone7245742012-09-05 17:12:55 -07004501 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004502 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004503
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 wdiConfigSTARspCb: callback for passing back the
4505 response of the config STA operation received from the
4506 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004507
Jeff Johnson295189b2012-06-20 16:38:30 -07004508 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 callback
4510
Jeff Johnson295189b2012-06-20 16:38:30 -07004511 @see WDI_Start
4512 @return Result of the function call
4513*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004514WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004515WDI_ConfigSTAReq
4516(
4517 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4518 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4519 void* pUserData
4520)
4521{
4522 WDI_EventInfoType wdiEventData;
4523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4524
4525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 ------------------------------------------------------------------------*/
4528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4529 {
4530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4531 "WDI API call before module is initialized - Fail request");
4532
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 }
4535
4536 /*------------------------------------------------------------------------
4537 Fill in Event data and post to the Main FSM
4538 ------------------------------------------------------------------------*/
4539 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4541 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4542 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 wdiEventData.pUserData = pUserData;
4544
4545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4546
4547}/*WDI_ConfigSTAReq*/
4548
4549/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 wants to change the state of an ongoing link. Upon the
4552 call of this API the WLAN DAL will pack and send a HAL
4553 Start message request message to the lower RIVA
4554 sub-system if DAL is in state STARTED.
4555
4556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004558
4559 WDI_JoinStartReq must have been called.
4560
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004563
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 wdiSetLinkStateRspCb: callback for passing back the
4565 response of the set link state operation received from
4566 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004567
Jeff Johnson295189b2012-06-20 16:38:30 -07004568 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 callback
4570
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 @see WDI_JoinStartReq
4572 @return Result of the function call
4573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004575WDI_SetLinkStateReq
4576(
4577 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4578 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4579 void* pUserData
4580)
4581{
4582 WDI_EventInfoType wdiEventData;
4583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4584
4585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 ------------------------------------------------------------------------*/
4588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4589 {
4590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4591 "WDI API call before module is initialized - Fail request");
4592
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 }
4595
4596 /*------------------------------------------------------------------------
4597 Fill in Event data and post to the Main FSM
4598 ------------------------------------------------------------------------*/
4599 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004600 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4601 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4602 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 wdiEventData.pUserData = pUserData;
4604
4605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4606
4607}/*WDI_SetLinkStateReq*/
4608
4609
4610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004611 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 to get statistics (MIB counters) from the device. Upon
4613 the call of this API the WLAN DAL will pack and send a
4614 HAL Start request message to the lower RIVA sub-system
4615 if DAL is in state STARTED.
4616
4617 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004619
4620 WDI_Start must have been called.
4621
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004624
Jeff Johnson295189b2012-06-20 16:38:30 -07004625 wdiGetStatsRspCb: callback for passing back the response
4626 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004627
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 callback
4630
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 @see WDI_Start
4632 @return Result of the function call
4633*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004634WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004635WDI_GetStatsReq
4636(
4637 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4638 WDI_GetStatsRspCb wdiGetStatsRspCb,
4639 void* pUserData
4640)
4641{
4642 WDI_EventInfoType wdiEventData;
4643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4644
4645 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 ------------------------------------------------------------------------*/
4648 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4649 {
4650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4651 "WDI API call before module is initialized - Fail request");
4652
Jeff Johnsone7245742012-09-05 17:12:55 -07004653 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 }
4655
4656 /*------------------------------------------------------------------------
4657 Fill in Event data and post to the Main FSM
4658 ------------------------------------------------------------------------*/
4659 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 wdiEventData.pEventData = pwdiGetStatsReqParams;
4661 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4662 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 wdiEventData.pUserData = pUserData;
4664
4665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4666
4667}/*WDI_GetStatsReq*/
4668
4669
4670/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004671 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 it wishes to change the configuration of the WLAN
4673 Device. Upon the call of this API the WLAN DAL will pack
4674 and send a HAL Update CFG request message to the lower
4675 RIVA sub-system if DAL is in state STARTED.
4676
4677 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004678 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004679
4680 WDI_Start must have been called.
4681
Jeff Johnsone7245742012-09-05 17:12:55 -07004682 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004683 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004684
Jeff Johnson295189b2012-06-20 16:38:30 -07004685 wdiUpdateCfgsRspCb: callback for passing back the
4686 response of the update cfg operation received from the
4687 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004688
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 callback
4691
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 @see WDI_Start
4693 @return Result of the function call
4694*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004696WDI_UpdateCfgReq
4697(
4698 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4699 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4700 void* pUserData
4701)
4702{
4703 WDI_EventInfoType wdiEventData;
4704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4705
4706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 ------------------------------------------------------------------------*/
4709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4710 {
4711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4712 "WDI API call before module is initialized - Fail request");
4713
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 }
4716
4717 /*------------------------------------------------------------------------
4718 Fill in Event data and post to the Main FSM
4719 ------------------------------------------------------------------------*/
4720 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004721 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4722 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4723 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 wdiEventData.pUserData = pUserData;
4725
4726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4727
4728}/*WDI_UpdateCfgReq*/
4729
4730
4731
4732/**
4733 @brief WDI_AddBAReq will be called when the upper MAC has setup
4734 successfully a BA session and needs to notify the HW for
4735 the appropriate settings to take place. Upon the call of
4736 this API the WLAN DAL will pack and send a HAL Add BA
4737 request message to the lower RIVA sub-system if DAL is
4738 in state STARTED.
4739
4740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004742
4743 WDI_PostAssocReq must have been called.
4744
4745 @param wdiAddBAReqParams: the add BA parameters as specified by
4746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004747
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 wdiAddBARspCb: callback for passing back the response of
4749 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004750
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 callback
4753
Jeff Johnson295189b2012-06-20 16:38:30 -07004754 @see WDI_PostAssocReq
4755 @return Result of the function call
4756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004758WDI_AddBAReq
4759(
4760 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4761 WDI_AddBARspCb wdiAddBARspCb,
4762 void* pUserData
4763)
4764{
4765 WDI_EventInfoType wdiEventData;
4766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4767
4768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 ------------------------------------------------------------------------*/
4771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4772 {
4773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4774 "WDI API call before module is initialized - Fail request");
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 }
4778
4779 /*------------------------------------------------------------------------
4780 Fill in Event data and post to the Main FSM
4781 ------------------------------------------------------------------------*/
4782 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 wdiEventData.pEventData = pwdiAddBAReqParams;
4784 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4785 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 wdiEventData.pUserData = pUserData;
4787
4788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4789
4790}/*WDI_AddBAReq*/
4791
4792
4793/**
4794 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4795 successfully a BA session and needs to notify the HW for
4796 the appropriate settings to take place. Upon the call of
4797 this API the WLAN DAL will pack and send a HAL Add BA
4798 request message to the lower RIVA sub-system if DAL is
4799 in state STARTED.
4800
4801 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004803
4804 WDI_PostAssocReq must have been called.
4805
4806 @param wdiAddBAReqParams: the add BA parameters as specified by
4807 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004808
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 wdiAddBARspCb: callback for passing back the response of
4810 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004811
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 callback
4814
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 @see WDI_PostAssocReq
4816 @return Result of the function call
4817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004819WDI_TriggerBAReq
4820(
4821 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4822 WDI_TriggerBARspCb wdiTriggerBARspCb,
4823 void* pUserData
4824)
4825{
4826 WDI_EventInfoType wdiEventData;
4827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4828
4829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 ------------------------------------------------------------------------*/
4832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4833 {
4834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4835 "WDI API call before module is initialized - Fail request");
4836
Jeff Johnsone7245742012-09-05 17:12:55 -07004837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 }
4839
4840 /*------------------------------------------------------------------------
4841 Fill in Event data and post to the Main FSM
4842 ------------------------------------------------------------------------*/
4843 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4845 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4846 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 wdiEventData.pUserData = pUserData;
4848
4849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4850
4851}/*WDI_AddBAReq*/
4852
4853/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 wishes to update any of the Beacon parameters used by HW.
4856 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4857 message to the lower RIVA sub-system if DAL is in state
4858 STARTED.
4859
4860 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004862
4863 WDI_PostAssocReq must have been called.
4864
Jeff Johnsone7245742012-09-05 17:12:55 -07004865 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004867
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 wdiUpdateBeaconParamsRspCb: callback for passing back the
4869 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004870
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004872 callback
4873
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 @see WDI_PostAssocReq
4875 @return Result of the function call
4876*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004877WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004878WDI_UpdateBeaconParamsReq
4879(
4880 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4881 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4882 void* pUserData
4883)
4884{
4885 WDI_EventInfoType wdiEventData;
4886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4887
4888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 ------------------------------------------------------------------------*/
4891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4892 {
4893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4894 "WDI API call before module is initialized - Fail request");
4895
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 }
4898
4899 /*------------------------------------------------------------------------
4900 Fill in Event data and post to the Main FSM
4901 ------------------------------------------------------------------------*/
4902 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4904 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4905 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 wdiEventData.pUserData = pUserData;
4907
4908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4909
4910}/*WDI_UpdateBeaconParamsReq*/
4911
4912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 wishes to update the Beacon template used by HW.
4915 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4916 message to the lower RIVA sub-system if DAL is in state
4917 STARTED.
4918
4919 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004921
4922 WDI_PostAssocReq must have been called.
4923
Jeff Johnsone7245742012-09-05 17:12:55 -07004924 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004925 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004926
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 wdiSendBeaconParamsRspCb: callback for passing back the
4928 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004929
Jeff Johnson295189b2012-06-20 16:38:30 -07004930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004931 callback
4932
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 @see WDI_PostAssocReq
4934 @return Result of the function call
4935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004937WDI_SendBeaconParamsReq
4938(
4939 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4940 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4941 void* pUserData
4942)
4943{
4944 WDI_EventInfoType wdiEventData;
4945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4946
4947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004949 ------------------------------------------------------------------------*/
4950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4951 {
4952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4953 "WDI API call before module is initialized - Fail request");
4954
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 }
4957
4958 /*------------------------------------------------------------------------
4959 Fill in Event data and post to the Main FSM
4960 ------------------------------------------------------------------------*/
4961 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 wdiEventData.pEventData = pwdiSendBeaconParams;
4963 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
4964 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 wdiEventData.pUserData = pUserData;
4966
4967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4968
4969}/*WDI_SendBeaconParamsReq*/
4970
4971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004972 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 upper MAC wants to update the probe response template to
4974 be transmitted as Soft AP
4975 Upon the call of this API the WLAN DAL will
4976 pack and send the probe rsp template message to the
4977 lower RIVA sub-system if DAL is in state STARTED.
4978
4979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004981
4982
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004985
Jeff Johnson295189b2012-06-20 16:38:30 -07004986 wdiSendBeaconParamsRspCb: callback for passing back the
4987 response of the Send Beacon Params operation received
4988 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004989
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 callback
4992
Jeff Johnson295189b2012-06-20 16:38:30 -07004993 @see WDI_AddBAReq
4994 @return Result of the function call
4995*/
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004998WDI_UpdateProbeRspTemplateReq
4999(
5000 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5001 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5002 void* pUserData
5003)
5004{
5005 WDI_EventInfoType wdiEventData;
5006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5007
5008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 ------------------------------------------------------------------------*/
5011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5012 {
5013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5014 "WDI API call before module is initialized - Fail request");
5015
Jeff Johnsone7245742012-09-05 17:12:55 -07005016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005017 }
5018
5019 /*------------------------------------------------------------------------
5020 Fill in Event data and post to the Main FSM
5021 ------------------------------------------------------------------------*/
5022 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005023 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5024 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5025 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 wdiEventData.pUserData = pUserData;
5027
5028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5029
5030}/*WDI_UpdateProbeRspTemplateReq*/
5031
5032/**
5033 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5034 to the NV memory.
5035
5036
5037 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5038 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005039
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 wdiNvDownloadRspCb: callback for passing back the response of
5041 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005042
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005044 callback
5045
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 @see WDI_PostAssocReq
5047 @return Result of the function call
5048*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005049WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005050WDI_NvDownloadReq
5051(
5052 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5053 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5054 void* pUserData
5055)
5056{
5057 WDI_EventInfoType wdiEventData;
5058
5059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 ------------------------------------------------------------------------*/
5062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5063 {
5064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5065 "WDI API call before module is initialized - Fail request");
5066
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 }
5069
5070 /*------------------------------------------------------------------------
5071 Fill in Event data and post to the Main FSM
5072 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005073 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5074 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5075 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5076 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 wdiEventData.pUserData = pUserData;
5078
5079 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5080
5081}/*WDI_NVDownloadReq*/
5082
5083#ifdef WLAN_FEATURE_P2P
5084/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 upper MAC wants to send Notice of Absence
5087 Upon the call of this API the WLAN DAL will
5088 pack and send the probe rsp template message to the
5089 lower RIVA sub-system if DAL is in state STARTED.
5090
5091 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005092 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005093
5094
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 wdiSendBeaconParamsRspCb: callback for passing back the
5099 response of the Send Beacon Params operation received
5100 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 callback
5104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 @see WDI_AddBAReq
5106 @return Result of the function call
5107*/
5108WDI_Status
5109WDI_SetP2PGONOAReq
5110(
5111 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5112 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5113 void* pUserData
5114)
5115{
5116 WDI_EventInfoType wdiEventData;
5117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5118
5119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 ------------------------------------------------------------------------*/
5122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5123 {
5124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5125 "WDI API call before module is initialized - Fail request");
5126
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 }
5129
5130 /*------------------------------------------------------------------------
5131 Fill in Event data and post to the Main FSM
5132 ------------------------------------------------------------------------*/
5133 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5135 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5136 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 wdiEventData.pUserData = pUserData;
5138
5139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5140
5141}/*WDI_SetP2PGONOAReq*/
5142#endif
5143
5144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 UMAC wanted to add STA self while opening any new session
5147 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005149
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005153
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 callback
5156
5157 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 @return Result of the function call
5159*/
5160WDI_Status
5161WDI_AddSTASelfReq
5162(
5163 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5164 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5165 void* pUserData
5166)
5167{
5168 WDI_EventInfoType wdiEventData;
5169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5170
5171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 ------------------------------------------------------------------------*/
5174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5175 {
5176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5177 "WDI API call before module is initialized - Fail request");
5178
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 }
5181
5182 /*------------------------------------------------------------------------
5183 Fill in Event data and post to the Main FSM
5184 ------------------------------------------------------------------------*/
5185 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5187 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5188 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 wdiEventData.pUserData = pUserData;
5190
5191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5192
5193}/*WDI_AddSTASelfReq*/
5194
5195
Jeff Johnsone7245742012-09-05 17:12:55 -07005196#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005197/**
5198 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5199 the device of a successful add TSpec negotiation. HW
5200 needs to receive the TSpec Info from the UMAC in order
5201 to configure properly the QoS data traffic. Upon the
5202 call of this API the WLAN DAL will pack and send a HAL
5203 Add TS request message to the lower RIVA sub-system if
5204 DAL is in state STARTED.
5205
5206 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005208
5209 WDI_PostAssocReq must have been called.
5210
5211 @param wdiAddTsReqParams: the add TS parameters as specified by
5212 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005213
Jeff Johnson295189b2012-06-20 16:38:30 -07005214 wdiAddTsRspCb: callback for passing back the response of
5215 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005216
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005218 callback
5219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 @see WDI_PostAssocReq
5221 @return Result of the function call
5222*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005223WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005224WDI_AggrAddTSReq
5225(
5226 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5227 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5228 void* pUserData
5229)
5230{
5231 WDI_EventInfoType wdiEventData;
5232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5233
5234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005235 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 ------------------------------------------------------------------------*/
5237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5238 {
5239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5240 "WDI API call before module is initialized - Fail request");
5241
Jeff Johnsone7245742012-09-05 17:12:55 -07005242 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005243 }
5244
5245 /*------------------------------------------------------------------------
5246 Fill in Event data and post to the Main FSM
5247 ------------------------------------------------------------------------*/
5248 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5250 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5251 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 wdiEventData.pUserData = pUserData;
5253
5254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5255
5256}/*WDI_AggrAddTSReq*/
5257
5258#endif /* WLAN_FEATURE_VOWIFI_11R */
5259
5260#ifdef ANI_MANF_DIAG
5261/**
5262 @brief WDI_FTMCommandReq
5263 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
5265 @param ftmCommandReq: FTM Command Body
5266 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005268
Jeff Johnson295189b2012-06-20 16:38:30 -07005269 @see
5270 @return Result of the function call
5271*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005273WDI_FTMCommandReq
5274(
5275 WDI_FTMCommandReqType *ftmCommandReq,
5276 WDI_FTMCommandRspCb ftmCommandRspCb,
5277 void *pUserData
5278)
5279{
5280 WDI_EventInfoType wdiEventData;
5281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5282
5283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005284 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 ------------------------------------------------------------------------*/
5286 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5287 {
5288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5289 "WDI API call before module is initialized - Fail request");
5290
Jeff Johnsone7245742012-09-05 17:12:55 -07005291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 }
5293
5294 /*------------------------------------------------------------------------
5295 Fill in Event data and post to the Main FSM
5296 ------------------------------------------------------------------------*/
5297 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5298 wdiEventData.pEventData = (void *)ftmCommandReq;
5299 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5300 wdiEventData.pCBfnc = ftmCommandRspCb;
5301 wdiEventData.pUserData = pUserData;
5302
5303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5304}
Jeff Johnsone7245742012-09-05 17:12:55 -07005305#endif /* ANI_MANF_DIAG */
Jeff Johnson295189b2012-06-20 16:38:30 -07005306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005308
5309 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005310 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005311
5312
5313 @param pwdiResumeReqParams: as specified by
5314 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005315
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 wdiResumeReqRspCb: callback for passing back the response of
5317 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005318
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005320 callback
5321
5322 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 @return Result of the function call
5324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005326WDI_HostResumeReq
5327(
5328 WDI_ResumeParamsType* pwdiResumeReqParams,
5329 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5330 void* pUserData
5331)
5332{
5333 WDI_EventInfoType wdiEventData;
5334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5335
5336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 ------------------------------------------------------------------------*/
5339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5340 {
5341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5342 "WDI API call before module is initialized - Fail request");
5343
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 }
5346
5347 /*------------------------------------------------------------------------
5348 Fill in Event data and post to the Main FSM
5349 ------------------------------------------------------------------------*/
5350 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 wdiEventData.pEventData = pwdiResumeReqParams;
5352 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5353 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 wdiEventData.pUserData = pUserData;
5355
5356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5357
5358}/*WDI_HostResumeReq*/
5359
5360/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005362
5363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005365
5366
5367 @param pwdiDelStaSelfReqParams: as specified by
5368 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 wdiDelStaSelfRspCb: callback for passing back the response of
5371 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005372
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 callback
5375
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 @see WDI_PostAssocReq
5377 @return Result of the function call
5378*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005379WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005380WDI_DelSTASelfReq
5381(
5382 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5383 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5384 void* pUserData
5385)
5386{
5387 WDI_EventInfoType wdiEventData;
5388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5389
5390 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005391 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 ------------------------------------------------------------------------*/
5393 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5394 {
5395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5396 "WDI API call before module is initialized - Fail request");
5397
Jeff Johnsone7245742012-09-05 17:12:55 -07005398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 }
5400
5401 /*------------------------------------------------------------------------
5402 Fill in Event data and post to the Main FSM
5403 ------------------------------------------------------------------------*/
5404 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005405 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5406 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5407 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005408 wdiEventData.pUserData = pUserData;
5409
5410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5411
5412}/*WDI_AggrAddTSReq*/
5413
5414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005415 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5416 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 Upon the call of this API the WLAN DAL will pack
5418 and send a HAL Set Tx Per Tracking request message to the
5419 lower RIVA sub-system if DAL is in state STARTED.
5420
5421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005423
Jeff Johnsone7245742012-09-05 17:12:55 -07005424 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005425 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 pwdiSetTxPerTrackingRspCb: callback for passing back the
5428 response of the set Tx PER Tracking configurations operation received
5429 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005430
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005432 callback
5433
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 @return Result of the function call
5435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005437WDI_SetTxPerTrackingReq
5438(
5439 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5440 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5441 void* pUserData
5442)
5443{
5444 WDI_EventInfoType wdiEventData;
5445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5446
5447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 ------------------------------------------------------------------------*/
5450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5451 {
5452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5453 "WDI API call before module is initialized - Fail request");
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 }
5457
5458 /*------------------------------------------------------------------------
5459 Fill in Event data and post to the Main FSM
5460 ------------------------------------------------------------------------*/
5461 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005463 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 wdiEventData.pUserData = pUserData;
5466
5467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5468
5469}/*WDI_SetTxPerTrackingReq*/
5470
5471/**
5472 @brief WDI_SetTmLevelReq
5473 If HW Thermal condition changed, driver should react based on new
5474 HW thermal condition.
5475
5476 @param pwdiSetTmLevelReq: New thermal condition information
5477
5478 pwdiSetTmLevelRspCb: callback
5479
5480 usrData: user data will be passed back with the
5481 callback
5482
5483 @return Result of the function call
5484*/
5485WDI_Status
5486WDI_SetTmLevelReq
5487(
5488 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5489 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5490 void *usrData
5491)
5492{
5493 WDI_EventInfoType wdiEventData;
5494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5495
5496 /*------------------------------------------------------------------------
5497 Sanity Check
5498 ------------------------------------------------------------------------*/
5499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5500 {
5501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5502 "WDI API call before module is initialized - Fail request");
5503
5504 return WDI_STATUS_E_NOT_ALLOWED;
5505 }
5506
5507 /*------------------------------------------------------------------------
5508 Fill in Event data and post to the Main FSM
5509 ------------------------------------------------------------------------*/
5510 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5511 wdiEventData.pEventData = pwdiSetTmLevelReq;
5512 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5513 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5514 wdiEventData.pUserData = usrData;
5515
5516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5517}
5518
5519/**
5520 @brief WDI_HostSuspendInd
5521
5522 Suspend Indication from the upper layer will be sent
5523 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005524
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
5527 @see
5528
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 @return Status of the request
5530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005532WDI_HostSuspendInd
5533(
5534 WDI_SuspendParamsType* pwdiSuspendIndParams
5535)
5536{
5537
5538 WDI_EventInfoType wdiEventData;
5539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5540
5541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 ------------------------------------------------------------------------*/
5544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5545 {
5546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5547 "WDI API call before module is initialized - Fail request");
5548
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 }
5551
5552 /*------------------------------------------------------------------------
5553 Fill in Event data and post to the Main FSM
5554 ------------------------------------------------------------------------*/
5555 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 wdiEventData.pEventData = pwdiSuspendIndParams;
5557 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5558 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005559 wdiEventData.pUserData = NULL;
5560
5561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5562
5563}/*WDI_HostSuspendInd*/
5564
5565/**
5566 @brief WDI_HALDumpCmdReq
5567 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005568
5569 @param halDumpCmdReqParams: Hal Dump Command Body
5570 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005572
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 @see
5574 @return Result of the function call
5575*/
5576WDI_Status WDI_HALDumpCmdReq
5577(
5578 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5579 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5580 void *pUserData
5581)
5582{
5583 WDI_EventInfoType wdiEventData;
5584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5585
5586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 ------------------------------------------------------------------------*/
5589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5590 {
5591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5592 "WDI API call before module is initialized - Fail request");
5593
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 }
5596
5597 /*------------------------------------------------------------------------
5598 Fill in Event data and post to the Main FSM
5599 ------------------------------------------------------------------------*/
5600 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5601 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5602 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5603 wdiEventData.pCBfnc = halDumpCmdRspCb;
5604 wdiEventData.pUserData = pUserData;
5605
5606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5607}
5608
Jeff Johnsone7245742012-09-05 17:12:55 -07005609/*============================================================================
5610
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005612
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 ============================================================================*/
5614
5615/**
5616 @brief Main FSM Start function for all states except BUSY
5617
Jeff Johnsone7245742012-09-05 17:12:55 -07005618
5619 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 wdiEV: event posted to the main DAL FSM
5621 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005622 structure
5623
Jeff Johnson295189b2012-06-20 16:38:30 -07005624 @see
5625 @return Result of the function call
5626*/
5627WDI_Status
5628WDI_PostMainEvent
5629(
Jeff Johnsone7245742012-09-05 17:12:55 -07005630 WDI_ControlBlockType* pWDICtx,
5631 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005632 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005633
Jeff Johnson295189b2012-06-20 16:38:30 -07005634)
5635{
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 WDI_Status wdiStatus;
5637 WDI_MainFuncType pfnWDIMainEvHdlr;
5638 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5640
5641 /*-------------------------------------------------------------------------
5642 Sanity check
5643 -------------------------------------------------------------------------*/
5644 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5645 ( wdiEV >= WDI_MAX_EVENT ))
5646 {
5647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5648 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5649 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 }
5652
5653 /*Access to the global state must be locked */
5654 wpalMutexAcquire(&pWDICtx->wptMutex);
5655
5656 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005658
5659 wdiOldState = pWDICtx->uGlobalState;
5660
5661 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005662 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5663 response comes from CCPU for the request sent by host:
5664 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 -07005665 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 -07005666 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 CCPU:
5668 don't change the state */
5669 if ( WDI_RESPONSE_EVENT != wdiEV)
5670 {
5671 /*Transition to BUSY State - the request is now being processed by the FSM,
5672 if the request fails we shall transition back to the old state, if not
5673 the request will manage its own state transition*/
5674 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5675 }
5676 /* If the state function associated with the EV is NULL it means that this
5677 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 {
5680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005681 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005683 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005684 }
5685 else
5686 {
5687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 }
5692
5693 /* If a request handles itself well it will end up in a success or in a
5694 pending
5695 Success - means that the request was processed and the proper state
5696 transition already occurred or will occur when the resp is received
5697 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 Pending - means the request could not be processed at this moment in time
5700 because the FSM was already busy so no state transition or dequeueing
5701 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005702
Jeff Johnson295189b2012-06-20 16:38:30 -07005703 Success for synchronous case means that the transition may occur and
5704 processing of pending requests may continue - so it should go through
5705 and restores the state and continue processing queued requests*/
5706 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5707 ( WDI_STATUS_PENDING != wdiStatus ))
5708 {
5709 if ( WDI_RESPONSE_EVENT != wdiEV)
5710 {
5711 /*The request has failed or could not be processed - transition back to
5712 the old state - check to see if anything was queued and try to execute
5713 The dequeue logic should post a message to a thread and return - no
5714 actual processing can occur */
5715 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5716 }
5717 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005718
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 }
5720
5721 /* we have completed processing the event */
5722 wpalMutexRelease(&pWDICtx->wptMutex);
5723
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005725
5726}/*WDI_PostMainEvent*/
5727
5728
5729/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005730 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005731--------------------------------------------------------------------------*/
5732/**
5733 @brief Main FSM Start function for all states except BUSY
5734
Jeff Johnsone7245742012-09-05 17:12:55 -07005735
5736 @param pWDICtx: pointer to the WLAN DAL context
5737 pEventData: pointer to the event information structure
5738
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 @see
5740 @return Result of the function call
5741*/
5742WDI_Status
5743WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005744(
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 WDI_ControlBlockType* pWDICtx,
5746 WDI_EventInfoType* pEventData
5747)
5748{
5749
5750 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 ----------------------------------------------------------------------*/
5753 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5754 {
5755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005757 pWDICtx, pEventData);
5758 return WDI_STATUS_E_FAILURE;
5759 }
5760
5761 wpalMutexAcquire(&pWDICtx->wptMutex);
5762
5763 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005764 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 ----------------------------------------------------------------------*/
5766 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5767 {
5768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5769 "Control Transport not yet Open - queueing the request");
5770
5771 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
5774 wpalMutexRelease(&pWDICtx->wptMutex);
5775 return WDI_STATUS_PENDING;
5776 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005777
Jeff Johnson295189b2012-06-20 16:38:30 -07005778 wpalMutexRelease(&pWDICtx->wptMutex);
5779
5780 /*Return Success*/
5781 return WDI_ProcessRequest( pWDICtx, pEventData );
5782
5783}/*WDI_MainStart*/
5784
5785/**
5786 @brief Main FSM Response function for state INIT
5787
Jeff Johnsone7245742012-09-05 17:12:55 -07005788
5789 @param pWDICtx: pointer to the WLAN DAL context
5790 pEventData: pointer to the event information structure
5791
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 @see
5793 @return Result of the function call
5794*/
5795WDI_Status
5796WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005797(
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 WDI_ControlBlockType* pWDICtx,
5799 WDI_EventInfoType* pEventData
5800)
5801{
5802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005806
5807 /*Return Success*/
5808 return WDI_STATUS_E_NOT_ALLOWED;
5809}/* WDI_MainRspInit */
5810
5811/**
5812 @brief Main FSM Close function for all states except BUSY
5813
Jeff Johnsone7245742012-09-05 17:12:55 -07005814
5815 @param pWDICtx: pointer to the WLAN DAL context
5816 pEventData: pointer to the event information structure
5817
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 @see
5819 @return Result of the function call
5820*/
5821WDI_Status
5822WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005823(
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 WDI_ControlBlockType* pWDICtx,
5825 WDI_EventInfoType* pEventData
5826)
5827{
5828
5829 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 ----------------------------------------------------------------------*/
5832 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5833 {
5834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 pWDICtx, pEventData);
5837 return WDI_STATUS_E_FAILURE;
5838 }
5839
5840 /*Return Success*/
5841 return WDI_ProcessRequest( pWDICtx, pEventData );
5842
5843}/*WDI_MainClose*/
5844/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005846--------------------------------------------------------------------------*/
5847/**
5848 @brief Main FSM Start function for state STARTED
5849
Jeff Johnsone7245742012-09-05 17:12:55 -07005850
5851 @param pWDICtx: pointer to the WLAN DAL context
5852 pEventData: pointer to the event information structure
5853
Jeff Johnson295189b2012-06-20 16:38:30 -07005854 @see
5855 @return Result of the function call
5856*/
5857WDI_Status
5858WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005859(
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 WDI_ControlBlockType* pWDICtx,
5861 WDI_EventInfoType* pEventData
5862)
5863{
5864 WDI_StartRspCb wdiStartRspCb = NULL;
5865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5866
5867 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005868 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005869 ----------------------------------------------------------------------*/
5870 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5871 {
5872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005874 pWDICtx, pEventData);
5875 return WDI_STATUS_E_FAILURE;
5876 }
5877
5878 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005879 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005880 ----------------------------------------------------------------------*/
5881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005882 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005883
5884 wpalMutexAcquire(&pWDICtx->wptMutex);
5885
5886 /*Transition back to started because the post function transitioned us to
5887 busy*/
5888 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5889
5890 /*Check to see if any request is pending*/
5891 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005892
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 wpalMutexRelease(&pWDICtx->wptMutex);
5894
5895 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5897
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 /*Notify UMAC*/
5899 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5900
5901 /*Return Success*/
5902 return WDI_STATUS_SUCCESS;
5903
5904}/*WDI_MainStartStarted*/
5905
5906/**
5907 @brief Main FSM Stop function for state STARTED
5908
Jeff Johnsone7245742012-09-05 17:12:55 -07005909
5910 @param pWDICtx: pointer to the WLAN DAL context
5911 pEventData: pointer to the event information structure
5912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 @see
5914 @return Result of the function call
5915*/
5916WDI_Status
5917WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005918(
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 WDI_ControlBlockType* pWDICtx,
5920 WDI_EventInfoType* pEventData
5921)
5922{
5923 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005925 ----------------------------------------------------------------------*/
5926 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5927 {
5928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005929 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005930 pWDICtx, pEventData);
5931 return WDI_STATUS_E_FAILURE;
5932 }
5933
5934 /*State at this point is BUSY - because we enter this state before posting
5935 an event to the FSM in order to prevent potential race conditions*/
5936
5937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5938 "Processing stop request in FSM");
5939
5940 /*Return Success*/
5941 return WDI_ProcessRequest( pWDICtx, pEventData );
5942
5943}/*WDI_MainStopStarted*/
5944/**
5945 @brief Main FSM Request function for state started
5946
Jeff Johnsone7245742012-09-05 17:12:55 -07005947
5948 @param pWDICtx: pointer to the WLAN DAL context
5949 pEventData: pointer to the event information structure
5950
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 @see
5952 @return Result of the function call
5953*/
5954WDI_Status
5955WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005956(
Jeff Johnson295189b2012-06-20 16:38:30 -07005957 WDI_ControlBlockType* pWDICtx,
5958 WDI_EventInfoType* pEventData
5959)
5960{
5961
5962 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 ----------------------------------------------------------------------*/
5965 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5966 {
5967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 pWDICtx, pEventData);
5970 return WDI_STATUS_E_FAILURE;
5971 }
5972
5973 /*State at this point is BUSY - because we enter this state before posting
5974 an event to the FSM in order to prevent potential race conditions*/
5975
5976 /*Return Success*/
5977 return WDI_ProcessRequest( pWDICtx, pEventData );
5978
5979}/*WDI_MainReqStarted*/
5980
5981/**
5982 @brief Main FSM Response function for all states except INIT
5983
Jeff Johnsone7245742012-09-05 17:12:55 -07005984
5985 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07005987
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 @see
5989 @return Result of the function call
5990*/
5991WDI_Status
5992WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07005993(
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 WDI_ControlBlockType* pWDICtx,
5995 WDI_EventInfoType* pEventData
5996)
5997{
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 wpt_boolean expectedResponse;
6000
6001 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 ----------------------------------------------------------------------*/
6004 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6005 {
6006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 pWDICtx, pEventData);
6009 return WDI_STATUS_E_FAILURE;
6010 }
6011
6012 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6013 {
6014 /* we received an expected response */
6015 expectedResponse = eWLAN_PAL_TRUE;
6016
6017 /*We expect that we will transition to started after this processing*/
6018 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6019
6020 /* we are no longer expecting a response */
6021 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6022 }
6023 else
6024 {
6025 /* we received an indication or unexpected response */
6026 expectedResponse = eWLAN_PAL_FALSE;
6027 /* for indications no need to update state from what it is right
6028 now, unless it explicitly does it in the indication handler (say
6029 for device failure ind) */
6030 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6031 }
6032
6033 /*Process the response and indication */
6034 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6035
6036 /*Lock the CB as we are about to do a state transition*/
6037 wpalMutexAcquire(&pWDICtx->wptMutex);
6038
6039 /*Transition to the expected state after the response processing
6040 - this should always be started state with the following exceptions:
6041 1. processing of a failed start response
6042 2. device failure detected while processing response
6043 3. stop response received*/
6044 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006045
Jeff Johnson295189b2012-06-20 16:38:30 -07006046 /*Dequeue request that may have been queued while we were waiting for the
6047 response */
6048 if ( expectedResponse )
6049 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006050 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006051 }
6052
6053 wpalMutexRelease(&pWDICtx->wptMutex);
6054
6055 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006057
6058}/*WDI_MainRsp*/
6059
6060/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006062--------------------------------------------------------------------------*/
6063/**
6064 @brief Main FSM Stop function for state STOPPED
6065
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
6067 @param pWDICtx: pointer to the WLAN DAL context
6068 pEventData: pointer to the event information structure
6069
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 @see
6071 @return Result of the function call
6072*/
6073WDI_Status
6074WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006075(
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 WDI_ControlBlockType* pWDICtx,
6077 WDI_EventInfoType* pEventData
6078)
6079{
6080 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006082 ----------------------------------------------------------------------*/
6083 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6084 {
6085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006086 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006087 pWDICtx, pEventData);
6088 return WDI_STATUS_E_FAILURE;
6089 }
6090
6091 /*We should normally not get a STOP request if we are already stopped
6092 since we should normally be stopped by the UMAC. However in some
6093 error situations we put ourselves in the stopped state without the
6094 UMAC knowing, so when we get a STOP request in this state we still
6095 process it since we need to clean up the underlying state */
6096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6097 "Processing stop request while stopped in FSM");
6098
6099 /*Return Success*/
6100 return WDI_ProcessRequest( pWDICtx, pEventData );
6101
6102}/*WDI_MainStopStopped*/
6103
6104/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006106--------------------------------------------------------------------------*/
6107/**
6108 @brief Main FSM Start function for state BUSY
6109
Jeff Johnsone7245742012-09-05 17:12:55 -07006110
6111 @param pWDICtx: pointer to the WLAN DAL context
6112 pEventData: pointer to the event information structure
6113
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 @see
6115 @return Result of the function call
6116*/
6117WDI_Status
6118WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006119(
Jeff Johnson295189b2012-06-20 16:38:30 -07006120 WDI_ControlBlockType* pWDICtx,
6121 WDI_EventInfoType* pEventData
6122)
6123{
6124 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 ----------------------------------------------------------------------*/
6127 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6128 {
6129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006130 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 pWDICtx, pEventData);
6132 return WDI_STATUS_E_FAILURE;
6133 }
6134
6135 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006136 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006137 ----------------------------------------------------------------------*/
6138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6139 "WDI Busy state - queue start request");
6140
6141 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006142 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006143
6144 /*Return Success*/
6145 return WDI_STATUS_PENDING;
6146}/*WDI_MainStartBusy*/
6147
6148/**
6149 @brief Main FSM Stop function for state BUSY
6150
Jeff Johnsone7245742012-09-05 17:12:55 -07006151
6152 @param pWDICtx: pointer to the WLAN DAL context
6153 pEventData: pointer to the event information structure
6154
Jeff Johnson295189b2012-06-20 16:38:30 -07006155 @see
6156 @return Result of the function call
6157*/
6158WDI_Status
6159WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006160(
Jeff Johnson295189b2012-06-20 16:38:30 -07006161 WDI_ControlBlockType* pWDICtx,
6162 WDI_EventInfoType* pEventData
6163)
6164{
6165 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006167 ----------------------------------------------------------------------*/
6168 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6169 {
6170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 pWDICtx, pEventData);
6173 return WDI_STATUS_E_FAILURE;
6174 }
6175
6176 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 ----------------------------------------------------------------------*/
6179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6180 "WDI Busy state - queue stop request");
6181
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006184
Jeff Johnson295189b2012-06-20 16:38:30 -07006185}/*WDI_MainStopBusy*/
6186
6187/**
6188 @brief Main FSM Request function for state BUSY
6189
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
6191 @param pWDICtx: pointer to the WLAN DAL context
6192 pEventData: pointer to the event information structure
6193
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 @see
6195 @return Result of the function call
6196*/
6197WDI_Status
6198WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006199(
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 WDI_ControlBlockType* pWDICtx,
6201 WDI_EventInfoType* pEventData
6202)
6203{
6204 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 ----------------------------------------------------------------------*/
6207 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6208 {
6209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 pWDICtx, pEventData);
6212 return WDI_STATUS_E_FAILURE;
6213 }
6214
6215 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 ----------------------------------------------------------------------*/
6218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6219 "WDI Busy state - queue request %d because waiting for response %d",
6220 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6221
Jeff Johnsone7245742012-09-05 17:12:55 -07006222 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006223 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006224
Jeff Johnson295189b2012-06-20 16:38:30 -07006225}/*WDI_MainReqBusy*/
6226/**
6227 @brief Main FSM Close function for state BUSY
6228
Jeff Johnsone7245742012-09-05 17:12:55 -07006229
6230 @param pWDICtx: pointer to the WLAN DAL context
6231 pEventData: pointer to the event information structure
6232
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 @see
6234 @return Result of the function call
6235*/
6236WDI_Status
6237WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006238(
Jeff Johnson295189b2012-06-20 16:38:30 -07006239 WDI_ControlBlockType* pWDICtx,
6240 WDI_EventInfoType* pEventData
6241)
6242{
6243 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 ----------------------------------------------------------------------*/
6246 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6247 {
6248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006249 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 pWDICtx, pEventData);
6251 return WDI_STATUS_E_FAILURE;
6252 }
6253
6254 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006255 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006256 ----------------------------------------------------------------------*/
6257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6258 "WDI Busy state - queue close request");
6259
Jeff Johnsone7245742012-09-05 17:12:55 -07006260 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006262
Jeff Johnson295189b2012-06-20 16:38:30 -07006263}/*WDI_MainCloseBusy*/
6264
6265/**
6266 @brief Main FSM Shutdown function for INIT & STARTED states
6267
6268
6269 @param pWDICtx: pointer to the WLAN DAL context
6270 pEventData: pointer to the event information structure
6271
6272 @see
6273 @return Result of the function call
6274*/
6275WDI_Status
6276WDI_MainShutdown
6277(
6278 WDI_ControlBlockType* pWDICtx,
6279 WDI_EventInfoType* pEventData
6280)
6281{
6282 /*--------------------------------------------------------------------
6283 Sanity Check
6284 ----------------------------------------------------------------------*/
6285 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6286 {
6287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6288 "Invalid parameters on Main Start %x %x",
6289 pWDICtx, pEventData);
6290 return WDI_STATUS_E_FAILURE;
6291 }
6292
6293 /*State at this point is BUSY - because we enter this state before posting
6294 an event to the FSM in order to prevent potential race conditions*/
6295
6296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6297 "Processing shutdown request in FSM");
6298
6299 /*Return Success*/
6300 return WDI_ProcessRequest( pWDICtx, pEventData );
6301
6302}/*WDI_MainShutdown*/
6303
6304/**
6305 @brief Main FSM Shutdown function for BUSY state
6306
6307
6308 @param pWDICtx: pointer to the WLAN DAL context
6309 pEventData: pointer to the event information structure
6310
6311 @see
6312 @return Result of the function call
6313*/
6314WDI_Status
6315WDI_MainShutdownBusy
6316(
6317 WDI_ControlBlockType* pWDICtx,
6318 WDI_EventInfoType* pEventData
6319)
6320{
6321 /*--------------------------------------------------------------------
6322 Sanity Check
6323 ----------------------------------------------------------------------*/
6324 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6325 {
6326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6327 "Invalid parameters on Main Start %x %x",
6328 pWDICtx, pEventData);
6329 return WDI_STATUS_E_FAILURE;
6330 }
6331
6332 /* If you are waiting for a HAL response at this stage, you are not
6333 * going to get it. Riva is already shutdown/crashed.
6334 */
6335 wpalTimerStop(&gWDICb.wptResponseTimer);
6336
6337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6338 "Processing shutdown request in FSM: Busy state ");
6339
6340 return WDI_ProcessRequest( pWDICtx, pEventData );
6341
6342}/*WDI_MainShutdownBusy*/
6343
6344
Jeff Johnsone7245742012-09-05 17:12:55 -07006345/*=======================================================================
6346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006348
Jeff Johnson295189b2012-06-20 16:38:30 -07006349*=======================================================================*/
6350
6351/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006353========================================================================*/
6354/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
6358 @param pWDICtx: pointer to the WLAN DAL context
6359 pEventData: pointer to the event information structure
6360
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 @see
6362 @return Result of the function call
6363*/
6364WDI_Status
6365WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006366(
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 WDI_ControlBlockType* pWDICtx,
6368 WDI_EventInfoType* pEventData
6369)
6370{
6371 WDI_StartReqParamsType* pwdiStartParams = NULL;
6372 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 wpt_uint16 usDataOffset = 0;
6375 wpt_uint16 usSendSize = 0;
6376
Jeff Johnsone7245742012-09-05 17:12:55 -07006377 tHalMacStartReqMsg halStartReq;
6378 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6380
6381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006383 -------------------------------------------------------------------------*/
6384 if (( NULL == pEventData ) ||
6385 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6386 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6387 {
6388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 }
6393
6394 /*-----------------------------------------------------------------------
6395 Get message buffer
6396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 pwdiStartParams->usConfigBufferLen;
6399
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 usLen,
6402 &pSendBuffer, &usDataOffset, &usSendSize))||
6403 ( usSendSize < (usDataOffset + usLen )))
6404 {
6405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6406 "Unable to get send buffer in start req %x %x %x",
6407 pEventData, pwdiStartParams, wdiStartRspCb);
6408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006410 }
6411
6412 /*-----------------------------------------------------------------------
6413 Fill in the message
6414 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 halStartReq.startReqParams.driverType =
6416 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006417
Jeff Johnsone7245742012-09-05 17:12:55 -07006418 halStartReq.startReqParams.uConfigBufferLen =
6419 pwdiStartParams->usConfigBufferLen;
6420 wpalMemoryCopy( pSendBuffer+usDataOffset,
6421 &halStartReq.startReqParams,
6422 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006423
Jeff Johnsone7245742012-09-05 17:12:55 -07006424 usDataOffset += sizeof(halStartReq.startReqParams);
6425 wpalMemoryCopy( pSendBuffer+usDataOffset,
6426 pwdiStartParams->pConfigBuffer,
6427 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006428
6429 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006431
6432 /*Save Low Level Ind CB and associated user data - it will be used further
6433 on when an indication is coming from the lower MAC*/
6434 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006435 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006436
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6443
Jeff Johnsone7245742012-09-05 17:12:55 -07006444
Jeff Johnson295189b2012-06-20 16:38:30 -07006445}/*WDI_ProcessStartReq*/
6446
6447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006448 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006450
6451 @param pWDICtx: pointer to the WLAN DAL context
6452 pEventData: pointer to the event information structure
6453
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 @see
6455 @return Result of the function call
6456*/
6457WDI_Status
6458WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006459(
Jeff Johnson295189b2012-06-20 16:38:30 -07006460 WDI_ControlBlockType* pWDICtx,
6461 WDI_EventInfoType* pEventData
6462)
6463{
6464 WDI_StopReqParamsType* pwdiStopParams = NULL;
6465 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006466 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006467 wpt_uint16 usDataOffset = 0;
6468 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006469 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6472
6473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 -------------------------------------------------------------------------*/
6476 if (( NULL == pEventData ) ||
6477 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6478 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6479 {
6480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 }
6485
6486 /*-----------------------------------------------------------------------
6487 Get message buffer
6488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 sizeof(halStopReq.stopReqParams),
6491 &pSendBuffer, &usDataOffset, &usSendSize))||
6492 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6493 {
6494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6495 "Unable to get send buffer in stop req %x %x %x",
6496 pEventData, pwdiStopParams, wdiStopRspCb);
6497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006499 }
6500
6501 /*-----------------------------------------------------------------------
6502 Fill in the message
6503 -----------------------------------------------------------------------*/
6504 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6505 pwdiStopParams->wdiStopReason);
6506
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 wpalMemoryCopy( pSendBuffer+usDataOffset,
6508 &halStopReq.stopReqParams,
6509 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006510
6511 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006513
6514 /*! TO DO: stop the data services */
6515 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6516 {
6517 /*Stop the STA Table !UT- check this logic again
6518 It is safer to do it here than on the response - because a stop is imminent*/
6519 WDI_STATableStop(pWDICtx);
6520
6521 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006522 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6523 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 {
6525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6526 "WDI Init failed to reset power state event");
6527
Jeff Johnsone7245742012-09-05 17:12:55 -07006528 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 return VOS_STATUS_E_FAILURE;
6530 }
6531 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006532 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6533 if( eWLAN_PAL_STATUS_SUCCESS != status )
6534 {
6535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6536 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6537 WDI_ASSERT(0);
6538 return WDI_STATUS_E_FAILURE;
6539 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006541 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006542 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006543 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6544 WDI_SET_POWER_STATE_TIMEOUT);
6545 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 {
6547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6548 "WDI Init failed to wait on an event");
6549
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 return VOS_STATUS_E_FAILURE;
6552 }
6553 }
6554
6555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006556 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006559 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6560
6561}/*WDI_ProcessStopReq*/
6562
6563/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006566
6567 @param pWDICtx: pointer to the WLAN DAL context
6568 pEventData: pointer to the event information structure
6569
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 @see
6571 @return Result of the function call
6572*/
6573WDI_Status
6574WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006575(
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 WDI_ControlBlockType* pWDICtx,
6577 WDI_EventInfoType* pEventData
6578)
6579{
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6582
6583 /*Lock control block for cleanup*/
6584 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006585
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 /*Clear all pending request*/
6587 WDI_ClearPendingRequests(pWDICtx);
6588
6589 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006590 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006591
6592 /* Close Data transport*/
6593 /* FTM mode does not open Data Path */
6594 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6595 {
6596 WDTS_Close(pWDICtx);
6597 }
6598
6599 /*Close the STA Table !UT- check this logic again*/
6600 WDI_STATableClose(pWDICtx);
6601
6602 /*close the PAL */
6603 wptStatus = wpalClose(pWDICtx->pPALContext);
6604 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6605 {
6606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6607 "Failed to wpal Close %d", wptStatus);
6608 WDI_ASSERT(0);
6609 }
6610
6611 /*Transition back to init state*/
6612 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6613
6614 wpalMutexRelease(&pWDICtx->wptMutex);
6615
6616 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006618
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620}/*WDI_ProcessCloseReq*/
6621
6622
6623/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006625===========================================================================*/
6626
6627/**
6628 @brief Process Init Scan Request function (called when Main FSM
6629 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006630
6631 @param pWDICtx: pointer to the WLAN DAL context
6632 pEventData: pointer to the event information structure
6633
Jeff Johnson295189b2012-06-20 16:38:30 -07006634 @see
6635 @return Result of the function call
6636*/
6637WDI_Status
6638WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006639(
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 WDI_ControlBlockType* pWDICtx,
6641 WDI_EventInfoType* pEventData
6642)
6643{
6644 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6645 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 wpt_uint16 usDataOffset = 0;
6648 wpt_uint16 usSendSize = 0;
6649 wpt_uint8 i = 0;
6650
6651 tHalInitScanReqMsg halInitScanReqMsg;
6652
Jeff Johnsone7245742012-09-05 17:12:55 -07006653 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006654 * It shold be removed once host and riva changes are in sync*/
6655 tHalInitScanConReqMsg halInitScanConReqMsg;
6656
6657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6658
6659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 -------------------------------------------------------------------------*/
6662 if (( NULL == pEventData ) ||
6663 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6664 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6665 {
6666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006670 }
6671
6672#if 0
6673 wpalMutexAcquire(&pWDICtx->wptMutex);
6674 /*-----------------------------------------------------------------------
6675 Check to see if SCAN is already in progress - if so reject the req
6676 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006677 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 -----------------------------------------------------------------------*/
6679 if ( pWDICtx->bScanInProgress )
6680 {
6681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6682 "Scan is already in progress - subsequent scan is not allowed"
6683 " until the first scan completes");
6684
6685 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 }
6688
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6690 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006691
6692 wpalMutexRelease(&pWDICtx->wptMutex);
6693#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006694 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 * It shold be removed once host and riva changes are in sync*/
6698 /*-----------------------------------------------------------------------
6699 Get message buffer
6700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 sizeof(halInitScanConReqMsg.initScanParams),
6703 &pSendBuffer, &usDataOffset, &usSendSize))||
6704 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6705 {
6706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6707 "Unable to get send buffer in init scan req %x %x %x",
6708 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 }
6712
6713
6714 /*-----------------------------------------------------------------------
6715 Fill in the message
6716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6719
6720 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6721 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6722
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006725 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006728 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6729
6730 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6731 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6732
6733#ifdef WLAN_FEATURE_P2P
6734 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6735 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
6736#endif
6737
Jeff Johnsone7245742012-09-05 17:12:55 -07006738 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6740
6741 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6742 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6745 }
6746
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 wpalMemoryCopy( pSendBuffer+usDataOffset,
6748 &halInitScanConReqMsg.initScanParams,
6749 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 }
6751 else
6752 {
6753 /*-----------------------------------------------------------------------
6754 Get message buffer
6755 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 sizeof(halInitScanReqMsg.initScanParams),
6758 &pSendBuffer, &usDataOffset, &usSendSize))||
6759 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6760 {
6761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6762 "Unable to get send buffer in init scan req %x %x %x",
6763 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 }
6767
6768
6769 /*-----------------------------------------------------------------------
6770 Fill in the message
6771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6774
6775 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6776 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6777
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006780 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006782 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6784
6785 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6786 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6787
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6790
6791 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6792 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006793 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6795 }
6796
Jeff Johnsone7245742012-09-05 17:12:55 -07006797 wpalMemoryCopy( pSendBuffer+usDataOffset,
6798 &halInitScanReqMsg.initScanParams,
6799 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 }
6801
6802 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006803 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006804
6805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6810
6811}/*WDI_ProcessInitScanReq*/
6812
6813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006816
6817 @param pWDICtx: pointer to the WLAN DAL context
6818 pEventData: pointer to the event information structure
6819
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 @see
6821 @return Result of the function call
6822*/
6823WDI_Status
6824WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006825(
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 WDI_ControlBlockType* pWDICtx,
6827 WDI_EventInfoType* pEventData
6828)
6829{
6830 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6831 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 wpt_uint16 usDataOffset = 0;
6834 wpt_uint16 usSendSize = 0;
6835
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6838
6839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 -------------------------------------------------------------------------*/
6842 if (( NULL == pEventData ) ||
6843 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6844 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6845 {
6846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006850 }
6851
6852#if 0
6853 wpalMutexAcquire(&pWDICtx->wptMutex);
6854 /*-----------------------------------------------------------------------
6855 Check to see if SCAN is already in progress - start scan is only
6856 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006857 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006858 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006860 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6861 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6862 {
6863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6864 "Scan start not allowed in this state %d %d",
6865 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006866
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 }
6870
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006872
6873 wpalMutexRelease(&pWDICtx->wptMutex);
6874#endif
6875
6876 /*-----------------------------------------------------------------------
6877 Get message buffer
6878 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006879 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 sizeof(halStartScanReqMsg.startScanParams),
6881 &pSendBuffer, &usDataOffset, &usSendSize))||
6882 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6883 {
6884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6885 "Unable to get send buffer in start scan req %x %x %x",
6886 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006889 }
6890
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 wpalMemoryCopy( pSendBuffer+usDataOffset,
6894 &halStartScanReqMsg.startScanParams,
6895 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006896
6897 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006899
6900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
6905}/*WDI_ProcessStartScanReq*/
6906
6907
6908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006911
6912 @param pWDICtx: pointer to the WLAN DAL context
6913 pEventData: pointer to the event information structure
6914
Jeff Johnson295189b2012-06-20 16:38:30 -07006915 @see
6916 @return Result of the function call
6917*/
6918WDI_Status
6919WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006920(
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 WDI_ControlBlockType* pWDICtx,
6922 WDI_EventInfoType* pEventData
6923)
6924{
6925 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
6926 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006928 wpt_uint16 usDataOffset = 0;
6929 wpt_uint16 usSendSize = 0;
6930
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6933
6934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 -------------------------------------------------------------------------*/
6937 if (( NULL == pEventData ) ||
6938 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
6939 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
6940 {
6941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 }
6946
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
6948 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 * forwarded to HAL and result in hang*/
6950#if 0
6951 wpalMutexAcquire(&pWDICtx->wptMutex);
6952 /*-----------------------------------------------------------------------
6953 Check to see if SCAN is already in progress - end scan is only
6954 allowed when a scan is ongoing and the state of the scan procedure
6955 is started
6956 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
6959 {
6960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6961 "End start not allowed in this state %d %d",
6962 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 }
6967
Jeff Johnsone7245742012-09-05 17:12:55 -07006968 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006969
6970 wpalMutexRelease(&pWDICtx->wptMutex);
6971#endif
6972
6973 /*-----------------------------------------------------------------------
6974 Get message buffer
6975 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 sizeof(halEndScanReqMsg.endScanParams),
6978 &pSendBuffer, &usDataOffset, &usSendSize))||
6979 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
6980 {
6981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6982 "Unable to get send buffer in start scan req %x %x %x",
6983 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
6984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 }
6987
6988 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
6989
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 wpalMemoryCopy( pSendBuffer+usDataOffset,
6991 &halEndScanReqMsg.endScanParams,
6992 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006993
6994 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006996
6997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7002}/*WDI_ProcessEndScanReq*/
7003
7004
7005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007008
7009 @param pWDICtx: pointer to the WLAN DAL context
7010 pEventData: pointer to the event information structure
7011
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 @see
7013 @return Result of the function call
7014*/
7015WDI_Status
7016WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007017(
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 WDI_ControlBlockType* pWDICtx,
7019 WDI_EventInfoType* pEventData
7020)
7021{
7022 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7023 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007024 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 wpt_uint16 usDataOffset = 0;
7026 wpt_uint16 usSendSize = 0;
7027 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007028 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7031
7032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 -------------------------------------------------------------------------*/
7035 if (( NULL == pEventData ) ||
7036 ( NULL == pEventData->pEventData) ||
7037 ( NULL == pEventData->pCBfnc))
7038 {
7039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 }
7044
7045 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7046 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007047 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7048 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007049 * forwarded to HAL and result in hang*/
7050#if 0
7051 wpalMutexAcquire(&pWDICtx->wptMutex);
7052 /*-----------------------------------------------------------------------
7053 Check to see if SCAN is already in progress
7054 Finish scan gets invoked any scan states. ie. abort scan
7055 It should be allowed in any states.
7056 -----------------------------------------------------------------------*/
7057 if ( !pWDICtx->bScanInProgress )
7058 {
7059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7060 "Finish start not allowed in this state %d",
7061 pWDICtx->bScanInProgress );
7062
7063 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 }
7066
7067 /*-----------------------------------------------------------------------
7068 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007069 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7072 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 wpalMutexRelease(&pWDICtx->wptMutex);
7074#endif
7075
7076 if ( pWDICtx->bInBmps )
7077 {
7078 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007079 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7080 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7081 {
7082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7083 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7084 WDI_ASSERT(0);
7085 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 }
7087
7088 /*-----------------------------------------------------------------------
7089 Get message buffer
7090 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 sizeof(halFinishScanReqMsg.finishScanParams),
7093 &pSendBuffer, &usDataOffset, &usSendSize))||
7094 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7095 {
7096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7097 "Unable to get send buffer in start scan req %x %x %x",
7098 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007101 }
7102
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7105
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7108
Jeff Johnsone7245742012-09-05 17:12:55 -07007109 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7111
7112 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7113 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7114
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7121
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7124
7125 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7126 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007127 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7129 }
7130
7131 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7132 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7133
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 wpalMemoryCopy( pSendBuffer+usDataOffset,
7135 &halFinishScanReqMsg.finishScanParams,
7136 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007137
7138 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007139 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007140
7141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007142 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007143 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7146}/*WDI_ProcessFinishScanReq*/
7147
7148
7149/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007151==========================================================================*/
7152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007153 @brief Process BSS Join for a given Session
7154
7155 @param pWDICtx: pointer to the WLAN DAL context
7156 pEventData: pointer to the event information structure
7157
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 @see
7159 @return Result of the function call
7160*/
7161WDI_Status
7162WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007163(
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 WDI_ControlBlockType* pWDICtx,
7165 WDI_JoinReqParamsType* pwdiJoinParams,
7166 WDI_JoinRspCb wdiJoinRspCb,
7167 void* pUserData
7168)
7169{
7170 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 wpt_uint16 usDataOffset = 0;
7173 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007174 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007175
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7178
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007179 wpalMutexAcquire(&pWDICtx->wptMutex);
7180
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 /*------------------------------------------------------------------------
7182 Check to see if we have any session with this BSSID already stored, we
7183 should not
7184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7186 pwdiJoinParams->wdiReqInfo.macBSSID,
7187 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007188
7189 if ( NULL != pBSSSes )
7190 {
7191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007192 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7193 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007194
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007195 /*reset the bAssociationInProgress otherwise the next
7196 *join request will be queued*/
7197 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7198 wpalMutexRelease(&pWDICtx->wptMutex);
7199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 }
7201
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 if ( NULL == pBSSSes )
7207 {
7208
7209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7210 "DAL has no free sessions - cannot run another join");
7211
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007212 /*reset the bAssociationInProgress otherwise the next
7213 *join request will be queued*/
7214 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 }
7218
7219 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7221 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007222 WDI_MAC_ADDR_LEN);
7223
7224 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007227
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 wpalMutexRelease(&pWDICtx->wptMutex);
7229
7230 /*-----------------------------------------------------------------------
7231 Get message buffer
7232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 sizeof(halJoinReqMsg.joinReqParams),
7235 &pSendBuffer, &usDataOffset, &usSendSize))||
7236 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7237 {
7238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7239 "Unable to get send buffer in join req %x %x %x",
7240 pUserData, pwdiJoinParams, wdiJoinRspCb);
7241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 }
7244
7245 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007247
7248 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 pwdiJoinParams->wdiReqInfo.macSTASelf,
7250 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007251
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7254
7255 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7256
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007257#ifdef WLAN_FEATURE_VOWIFI
7258 halJoinReqMsg.joinReqParams.maxTxPower =
7259 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7260#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007261 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7263#endif
7264
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7267 wdiSecondaryChannelOffset);
7268
Jeff Johnsone7245742012-09-05 17:12:55 -07007269 wpalMemoryCopy( pSendBuffer+usDataOffset,
7270 &halJoinReqMsg.joinReqParams,
7271 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007272
7273 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007275
7276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007277 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7280 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007281
7282}/*WDI_ProcessBSSSessionJoinReq*/
7283
7284/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007287
7288 @param pWDICtx: pointer to the WLAN DAL context
7289 pEventData: pointer to the event information structure
7290
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 @see
7292 @return Result of the function call
7293*/
7294WDI_Status
7295WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007296(
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 WDI_ControlBlockType* pWDICtx,
7298 WDI_EventInfoType* pEventData
7299)
7300{
7301 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7302 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7303 WDI_JoinRspCb wdiJoinRspCb = NULL;
7304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7305
7306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 -------------------------------------------------------------------------*/
7309 if (( NULL == pEventData ) ||
7310 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7311 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7312 {
7313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007318
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 /*-------------------------------------------------------------------------
7320 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 -------------------------------------------------------------------------*/
7323 wpalMutexAcquire(&pWDICtx->wptMutex);
7324
7325 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7326 {
7327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7328 "Association is currently in progress, queueing new join req");
7329
7330 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pwdiJoinParams->wdiReqInfo.macBSSID);
7333
7334 wpalMutexRelease(&pWDICtx->wptMutex);
7335
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 }
7338
7339 /*Starting a new association */
7340 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7341 wpalMutexRelease(&pWDICtx->wptMutex);
7342
7343 /*Process the Join Request*/
7344 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7345 wdiJoinRspCb,pEventData->pUserData);
7346
7347}/*WDI_ProcessJoinReq*/
7348
7349
7350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007353
7354 @param pWDICtx: pointer to the WLAN DAL context
7355 pEventData: pointer to the event information structure
7356
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 @see
7358 @return Result of the function call
7359*/
7360WDI_Status
7361WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007362(
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 WDI_ControlBlockType* pWDICtx,
7364 WDI_EventInfoType* pEventData
7365)
7366{
7367 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7368 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007369 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 wpt_uint16 uMsgSize = 0;
7372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 wpt_uint16 usDataOffset = 0;
7374 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007376
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7379
7380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 -------------------------------------------------------------------------*/
7383 if (( NULL == pEventData ) ||
7384 ( NULL == pEventData->pEventData ) ||
7385 ( NULL == pEventData->pCBfnc ))
7386 {
7387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 }
7392
7393 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7394 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7395 /*-------------------------------------------------------------------------
7396 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 -------------------------------------------------------------------------*/
7399 wpalMutexAcquire(&pWDICtx->wptMutex);
7400
7401 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007404 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7405 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7406 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007407
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 {
7410#ifdef WLAN_FEATURE_VOWIFI_11R
7411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 if ( NULL == pBSSSes )
7416 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007417
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7419 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007420
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007424
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7427 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007429
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7433#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 * Request in case of IBSS*/
7436 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7437 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7438 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7439 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7440 {
7441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 if ( NULL == pBSSSes )
7446 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007447
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7449 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007450
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007454
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7457 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007459
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7463 }
7464 else
7465 {
7466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7468 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7469 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7470
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 /* for IBSS testing */
7472 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 }
7475#endif
7476 }
7477
7478 /*------------------------------------------------------------------------
7479 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 ------------------------------------------------------------------------*/
7482 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7485 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7486 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7487 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007488
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007490
7491 wpalMutexRelease(&pWDICtx->wptMutex);
7492
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 }
7495
7496 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007497 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7498 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 sizeof(pWDICtx->wdiCachedConfigBssReq));
7500
7501 wpalMutexRelease(&pWDICtx->wptMutex);
7502
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7504#ifdef WLAN_FEATURE_11AC
7505 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007506 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 else
7508#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007509 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007510
7511 /*-----------------------------------------------------------------------
7512 Get message buffer
7513 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7516 ( usSendSize < (usDataOffset + uMsgSize )))
7517 {
7518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7519 "Unable to get send buffer in config bss req %x %x %x",
7520 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 }
7524
7525 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007526#ifdef WLAN_FEATURE_11AC
7527 if (WDI_getFwWlanFeatCaps(DOT11AC))
7528 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7529 &pwdiConfigBSSParams->wdiReqInfo);
7530 else
7531#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 &pwdiConfigBSSParams->wdiReqInfo);
7534
7535 /* Need to fill in the STA Index to invalid, since at this point we have not
7536 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007538
7539 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7541
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007542#ifdef WLAN_FEATURE_11AC
7543 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7544 wpalMemoryCopy( pSendBuffer+usDataOffset,
7545 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7546 uMsgSize);
7547 }else
7548#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 wpalMemoryCopy( pSendBuffer+usDataOffset,
7550 &halConfigBssReqMsg.uBssParams.configBssParams,
7551 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007552
7553 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007555
7556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7560 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 WDI_CONFIG_BSS_RESP);
7562
7563}/*WDI_ProcessConfigBSSReq*/
7564
7565
7566/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007569
7570 @param pWDICtx: pointer to the WLAN DAL context
7571 pEventData: pointer to the event information structure
7572
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 @see
7574 @return Result of the function call
7575*/
7576WDI_Status
7577WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007578(
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 WDI_ControlBlockType* pWDICtx,
7580 WDI_EventInfoType* pEventData
7581)
7582{
7583 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7584 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 wpt_uint16 usDataOffset = 0;
7589 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007591
Jeff Johnsone7245742012-09-05 17:12:55 -07007592 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7594
7595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 -------------------------------------------------------------------------*/
7598 if (( NULL == pEventData ) ||
7599 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7600 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7601 {
7602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 }
7607
7608 /*-------------------------------------------------------------------------
7609 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 -------------------------------------------------------------------------*/
7612 wpalMutexAcquire(&pWDICtx->wptMutex);
7613
7614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7618 pwdiDelBSSParams->ucBssIdx,
7619 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007620
Jeff Johnsone7245742012-09-05 17:12:55 -07007621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 {
7623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 "%s: BSS does not yet exist. ucBssIdx %d",
7625 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007626
7627 wpalMutexRelease(&pWDICtx->wptMutex);
7628
7629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007631
7632 /*------------------------------------------------------------------------
7633 Check if this BSS is being currently processed or queued,
7634 if queued - queue the new request as well
7635 ------------------------------------------------------------------------*/
7636 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007637 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7639 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7640 __func__, pwdiDelBSSParams->ucBssIdx);
7641
7642 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7643
7644 wpalMutexRelease(&pWDICtx->wptMutex);
7645
7646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007648
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 /*-----------------------------------------------------------------------
7650 If we receive a Del BSS request for an association that is already in
7651 progress, it indicates that the assoc has failed => we no longer have
7652 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 -----------------------------------------------------------------------*/
7655 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7656 {
7657 /*We can switch to false here because even if a subsequent Join comes in
7658 it will only be processed when DAL transitions out of BUSY state which
7659 happens when the Del BSS request comes */
7660 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7661
7662 /*Former association is complete - prepare next pending assoc for
7663 processing */
7664 WDI_DequeueAssocRequest(pWDICtx);
7665 }
7666
7667 wpalMutexRelease(&pWDICtx->wptMutex);
7668 /*-----------------------------------------------------------------------
7669 Get message buffer
7670 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 sizeof(halBssReqMsg.deleteBssParams),
7673 &pSendBuffer, &usDataOffset, &usSendSize))||
7674 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7675 {
7676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7677 "Unable to get send buffer in start req %x %x %x",
7678 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 }
7682
7683 /*Fill in the message request structure*/
7684
7685 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007686 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 wpalMemoryCopy( pSendBuffer+usDataOffset,
7689 &halBssReqMsg.deleteBssParams,
7690 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007691
7692 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007694
Jeff Johnsone7245742012-09-05 17:12:55 -07007695
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702
Jeff Johnson295189b2012-06-20 16:38:30 -07007703}/*WDI_ProcessDelBSSReq*/
7704
7705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007708
7709 @param pWDICtx: pointer to the WLAN DAL context
7710 pEventData: pointer to the event information structure
7711
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 @see
7713 @return Result of the function call
7714*/
7715WDI_Status
7716WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007717(
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_ControlBlockType* pWDICtx,
7719 WDI_EventInfoType* pEventData
7720)
7721{
7722 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7723 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 wpt_uint16 usDataOffset = 0;
7728 wpt_uint16 usSendSize = 0;
7729 wpt_uint16 uMsgSize = 0;
7730 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732
Jeff Johnsone7245742012-09-05 17:12:55 -07007733 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7735
7736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 -------------------------------------------------------------------------*/
7739 if (( NULL == pEventData ) ||
7740 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7741 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7742 {
7743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 }
7748
7749 /*-------------------------------------------------------------------------
7750 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007751 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 -------------------------------------------------------------------------*/
7753 wpalMutexAcquire(&pWDICtx->wptMutex);
7754
7755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7759 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7760 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007761
7762 if ( NULL == pBSSSes )
7763 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7765 "%s: Association sequence for this BSS does not yet exist - "
7766 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7767 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007768
7769 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 }
7772
7773 /*------------------------------------------------------------------------
7774 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 ------------------------------------------------------------------------*/
7777 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7780 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7781 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007782
Jeff Johnsone7245742012-09-05 17:12:55 -07007783 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007784
7785 wpalMutexRelease(&pWDICtx->wptMutex);
7786
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 }
7789
7790 /*-----------------------------------------------------------------------
7791 If Post Assoc was not yet received - the current association must
7792 be in progress
7793 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7796 {
7797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7798 "Association sequence for this BSS association no longer in "
7799 "progress - not allowed");
7800
7801 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 }
7804
7805 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 -----------------------------------------------------------------------*/
7808 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7809 {
7810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7811 "Post Assoc not allowed before JOIN - failing request");
7812
7813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 }
7816
7817 wpalMutexRelease(&pWDICtx->wptMutex);
7818
7819 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7820 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7821 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7826 ( usSendSize < (usDataOffset + uMsgSize )))
7827 {
7828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7829 "Unable to get send buffer in start req %x %x %x",
7830 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 }
7834
7835 /*Copy the STA parameters */
7836 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7837 &pwdiPostAssocParams->wdiSTAParams );
7838
7839 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 WDI_STATableFindStaidByAddr(pWDICtx,
7842 pwdiPostAssocParams->wdiSTAParams.macSTA,
7843 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7844 {
7845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7846 "This station does not exist in the WDI Station Table %d");
7847 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007848 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 }
7851
7852 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pBSSSes->ucBSSIdx;
7855
7856 /*Copy the BSS parameters */
7857 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7858 &pwdiPostAssocParams->wdiBSSParams);
7859
7860 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 WDI_STATableFindStaidByAddr(pWDICtx,
7863 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 {
7866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7867 "This station does not exist in the WDI Station Table %d");
7868 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 }
7871
7872 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007873 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 pBSSSes->ucBSSIdx;
7875
Jeff Johnsone7245742012-09-05 17:12:55 -07007876
7877 wpalMemoryCopy( pSendBuffer+usDataOffset,
7878 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7879 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007880
7881 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7882
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7884 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7885 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007886
Jeff Johnsone7245742012-09-05 17:12:55 -07007887
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007890
Jeff Johnsone7245742012-09-05 17:12:55 -07007891
7892 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007895
7896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7901
Jeff Johnsone7245742012-09-05 17:12:55 -07007902
Jeff Johnson295189b2012-06-20 16:38:30 -07007903}/*WDI_ProcessPostAssocReq*/
7904
7905/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007908
7909 @param pWDICtx: pointer to the WLAN DAL context
7910 pEventData: pointer to the event information structure
7911
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 @see
7913 @return Result of the function call
7914*/
7915WDI_Status
7916WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007917(
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 WDI_ControlBlockType* pWDICtx,
7919 WDI_EventInfoType* pEventData
7920)
7921{
7922 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
7923 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 wpt_uint16 usDataOffset = 0;
7928 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7931
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7934
7935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 -------------------------------------------------------------------------*/
7938 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
7939 ( NULL == pEventData->pCBfnc ))
7940 {
7941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 }
7946
7947 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
7948 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
7949 /*-------------------------------------------------------------------------
7950 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 -------------------------------------------------------------------------*/
7953 wpalMutexAcquire(&pWDICtx->wptMutex);
7954
7955 /*------------------------------------------------------------------------
7956 Find the BSS for which the request is made and identify WDI session
7957 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
7959 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 &macBSSID))
7961 {
7962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7963 "This station does not exist in the WDI Station Table %d");
7964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 }
7967
Jeff Johnsone7245742012-09-05 17:12:55 -07007968 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
7969 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7972 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
7973 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007974
7975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 }
7978
7979 /*------------------------------------------------------------------------
7980 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 ------------------------------------------------------------------------*/
7983 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7984 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7986 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7987 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007988
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 }
7993
7994 wpalMutexRelease(&pWDICtx->wptMutex);
7995 /*-----------------------------------------------------------------------
7996 Get message buffer
7997 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 sizeof(halDelStaReqMsg.delStaParams),
8000 &pSendBuffer, &usDataOffset, &usSendSize))||
8001 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8002 {
8003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8004 "Unable to get send buffer in start req %x %x %x",
8005 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 }
8009
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8011 wpalMemoryCopy( pSendBuffer+usDataOffset,
8012 &halDelStaReqMsg.delStaParams,
8013 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008014
8015 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008017
8018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8023
8024}/*WDI_ProcessDelSTAReq*/
8025
8026
8027/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008029==========================================================================*/
8030/**
8031 @brief Process Set BSS Key Request function (called when Main FSM
8032 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008033
8034 @param pWDICtx: pointer to the WLAN DAL context
8035 pEventData: pointer to the event information structure
8036
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 @see
8038 @return Result of the function call
8039*/
8040WDI_Status
8041WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008042(
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 WDI_ControlBlockType* pWDICtx,
8044 WDI_EventInfoType* pEventData
8045)
8046{
8047 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8048 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 wpt_uint16 usDataOffset = 0;
8053 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8056 wpt_uint8 keyIndex = 0;
8057
8058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8059
8060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 -------------------------------------------------------------------------*/
8063 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8064 ( NULL == pEventData->pCBfnc ))
8065 {
8066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 }
8071
8072 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8073 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8074 /*-------------------------------------------------------------------------
8075 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 -------------------------------------------------------------------------*/
8078 wpalMutexAcquire(&pWDICtx->wptMutex);
8079
8080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8084 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8085 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008086
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 {
8089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8091 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008092
8093 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 }
8096
8097 /*------------------------------------------------------------------------
8098 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 ------------------------------------------------------------------------*/
8101 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8102 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8104 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8105 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008106
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 }
8111
8112
8113 wpalMutexRelease(&pWDICtx->wptMutex);
8114 /*-----------------------------------------------------------------------
8115 Get message buffer
8116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8119 &pSendBuffer, &usDataOffset, &usSendSize))||
8120 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8121 {
8122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8123 "Unable to get send buffer in set bss key req %x %x %x",
8124 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 }
8128
8129 /*-----------------------------------------------------------------------
8130 Copy the Key parameters into the HAL message
8131 -----------------------------------------------------------------------*/
8132
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8140
8141 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8142 keyIndex++)
8143 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8146 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8147 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8148 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8149 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8150 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8157 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 WDI_MAX_KEY_LENGTH);
8160 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008161
8162 wpalMemoryCopy( pSendBuffer+usDataOffset,
8163 &halSetBssKeyReqMsg.setBssKeyParams,
8164 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008165
8166 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168
8169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8173 wdiSetBSSKeyRspCb, pEventData->pUserData,
8174 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176}/*WDI_ProcessSetBssKeyReq*/
8177
8178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008181
8182 @param pWDICtx: pointer to the WLAN DAL context
8183 pEventData: pointer to the event information structure
8184
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 @see
8186 @return Result of the function call
8187*/
8188WDI_Status
8189WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008190(
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 WDI_ControlBlockType* pWDICtx,
8192 WDI_EventInfoType* pEventData
8193)
8194{
8195 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8196 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 wpt_uint16 usDataOffset = 0;
8201 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8205
8206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 -------------------------------------------------------------------------*/
8209 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8210 ( NULL == pEventData->pCBfnc ))
8211 {
8212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 }
8217
8218 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8219 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8220 /*-------------------------------------------------------------------------
8221 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 -------------------------------------------------------------------------*/
8224 wpalMutexAcquire(&pWDICtx->wptMutex);
8225
8226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8230 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8231 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008232
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 {
8235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8237 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008238
8239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 }
8242
8243 /*------------------------------------------------------------------------
8244 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 ------------------------------------------------------------------------*/
8247 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8248 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8250 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8251 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008252
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 }
8257
8258
8259 wpalMutexRelease(&pWDICtx->wptMutex);
8260
8261 /*-----------------------------------------------------------------------
8262 Get message buffer
8263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8266 &pSendBuffer, &usDataOffset, &usSendSize))||
8267 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8268 {
8269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8270 "Unable to get send buffer in set bss key req %x %x %x",
8271 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 }
8275 /*-----------------------------------------------------------------------
8276 Copy the Key parameters into the HAL message
8277 -----------------------------------------------------------------------*/
8278 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8279
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8282
8283 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8284
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8287
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 wpalMemoryCopy( pSendBuffer+usDataOffset,
8289 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8290 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008291
8292 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008294
8295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008301}/*WDI_ProcessRemoveBssKeyReq*/
8302
8303/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008306
8307 @param pWDICtx: pointer to the WLAN DAL context
8308 pEventData: pointer to the event information structure
8309
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 @see
8311 @return Result of the function call
8312*/
8313WDI_Status
8314WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008315(
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 WDI_ControlBlockType* pWDICtx,
8317 WDI_EventInfoType* pEventData
8318)
8319{
8320 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8321 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8322 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 wpt_uint16 usDataOffset = 0;
8325 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8330 wpt_uint8 keyIndex = 0;
8331
8332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8333
8334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 -------------------------------------------------------------------------*/
8337 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8338 ( NULL == pEventData->pCBfnc ))
8339 {
8340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008341 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 }
8345
8346 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8347 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8348 /*-------------------------------------------------------------------------
8349 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 -------------------------------------------------------------------------*/
8352 wpalMutexAcquire(&pWDICtx->wptMutex);
8353
8354 /*------------------------------------------------------------------------
8355 Find the BSS for which the request is made and identify WDI session
8356 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8358 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 &macBSSID))
8360 {
8361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8362 "This station does not exist in the WDI Station Table %d");
8363 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 }
8366
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8368 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8371 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8372 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008373
8374 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008377
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 /*------------------------------------------------------------------------
8379 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 ------------------------------------------------------------------------*/
8382 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8383 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8385 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8386 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008387
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 }
8392
8393
8394 wpalMutexRelease(&pWDICtx->wptMutex);
8395 /*-----------------------------------------------------------------------
8396 Get message buffer
8397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8400 &pSendBuffer, &usDataOffset, &usSendSize))||
8401 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8402 {
8403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8404 "Unable to get send buffer in set bss key req %x %x %x",
8405 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409 /*-----------------------------------------------------------------------
8410 Copy the STA Key parameters into the HAL message
8411 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8414
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8417
8418 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8419
8420 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8421
8422 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8423
8424#ifdef WLAN_SOFTAP_FEATURE
8425 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8426 keyIndex++)
8427 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8430 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8431 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8432 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8433 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8434 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8441 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 WDI_MAX_KEY_LENGTH);
8444 }
8445#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8448 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8449 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8450 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8451 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8452 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8459 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 WDI_MAX_KEY_LENGTH);
8462#endif
8463
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 wpalMemoryCopy( pSendBuffer+usDataOffset,
8465 &halSetStaKeyReqMsg.setStaKeyParams,
8466 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
8468 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470
8471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8475 wdiSetSTAKeyRspCb, pEventData->pUserData,
8476 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008477
8478}/*WDI_ProcessSetSTAKeyReq*/
8479
8480/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008483
8484 @param pWDICtx: pointer to the WLAN DAL context
8485 pEventData: pointer to the event information structure
8486
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 @see
8488 @return Result of the function call
8489*/
8490WDI_Status
8491WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008492(
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 WDI_ControlBlockType* pWDICtx,
8494 WDI_EventInfoType* pEventData
8495)
8496{
8497 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8498 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8499 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 wpt_uint16 usDataOffset = 0;
8502 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 wpt_macAddr macBSSID;
8505 wpt_uint8 ucCurrentBSSSesIdx;
8506 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8508
8509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 -------------------------------------------------------------------------*/
8512 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8513 ( NULL == pEventData->pCBfnc ))
8514 {
8515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 }
8520
8521 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8522 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8523 /*-------------------------------------------------------------------------
8524 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 -------------------------------------------------------------------------*/
8527 wpalMutexAcquire(&pWDICtx->wptMutex);
8528
8529 /*------------------------------------------------------------------------
8530 Find the BSS for which the request is made and identify WDI session
8531 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8533 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 &macBSSID))
8535 {
8536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8537 "This station does not exist in the WDI Station Table %d");
8538 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 }
8541
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8543 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8546 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8547 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008552
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 /*------------------------------------------------------------------------
8554 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 ------------------------------------------------------------------------*/
8557 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8558 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8560 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8561 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008562
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 }
8567
8568
8569
8570 wpalMutexRelease(&pWDICtx->wptMutex);
8571 /*-----------------------------------------------------------------------
8572 Get message buffer
8573 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8576 &pSendBuffer, &usDataOffset, &usSendSize))||
8577 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8578 {
8579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8580 "Unable to get send buffer in set bss key req %x %x %x",
8581 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
8585
8586 /*-----------------------------------------------------------------------
8587 Copy the Key parameters into the HAL message
8588 -----------------------------------------------------------------------*/
8589
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8592
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8595
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8598
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8601
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 wpalMemoryCopy( pSendBuffer+usDataOffset,
8603 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8604 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008605
8606 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008608
8609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008615
8616}/*WDI_ProcessRemoveSTAKeyReq*/
8617
8618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008621
8622 @param pWDICtx: pointer to the WLAN DAL context
8623 pEventData: pointer to the event information structure
8624
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 @see
8626 @return Result of the function call
8627*/
8628WDI_Status
8629WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008630(
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_ControlBlockType* pWDICtx,
8632 WDI_EventInfoType* pEventData
8633)
8634{
8635 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8636 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 wpt_uint16 usDataOffset = 0;
8640 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8645 wpt_uint8 keyIndex = 0;
8646
8647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8648
8649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 -------------------------------------------------------------------------*/
8652 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8653 ( NULL == pEventData->pCBfnc ))
8654 {
8655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 }
8660
8661 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8662 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8663 /*-------------------------------------------------------------------------
8664 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
8667 wpalMutexAcquire(&pWDICtx->wptMutex);
8668
8669 /*------------------------------------------------------------------------
8670 Find the BSS for which the request is made and identify WDI session
8671 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8673 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 &macBSSID))
8675 {
8676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8677 "This station does not exist in the WDI Station Table %d");
8678 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 }
8681
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8683 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 {
8685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8687 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008688
8689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008692
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 /*------------------------------------------------------------------------
8694 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 ------------------------------------------------------------------------*/
8697 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8698 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8700 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8701 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 }
8707
8708
8709 wpalMutexRelease(&pWDICtx->wptMutex);
8710 /*-----------------------------------------------------------------------
8711 Get message buffer
8712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8715 &pSendBuffer, &usDataOffset, &usSendSize))||
8716 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8717 {
8718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8719 "Unable to get send buffer in set bss key req %x %x %x",
8720 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 }
8724 /*-----------------------------------------------------------------------
8725 Copy the STA Key parameters into the HAL message
8726 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8729
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8732
8733 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8734
8735 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8736
8737 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8738
8739#ifdef WLAN_SOFTAP_FEATURE
8740 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8741 keyIndex++)
8742 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8745 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8746 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8747 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8748 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8749 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8756 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 WDI_MAX_KEY_LENGTH);
8759 }
8760#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 halSetStaKeyReqMsg.setStaKeyParams.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyId;
8763 halSetStaKeyReqMsg.setStaKeyParams.key.unicast =
8764 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].unicast;
8765 halSetStaKeyReqMsg.setStaKeyParams.key.keyDirection =
8766 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyDirection;
8767 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 halSetStaKeyReqMsg.setStaKeyParams.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 halSetStaKeyReqMsg.setStaKeyParams.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].keyLength;
8774 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 WDI_MAX_KEY_LENGTH);
8777#endif
8778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 wpalMemoryCopy( pSendBuffer+usDataOffset,
8780 &halSetStaKeyReqMsg.setStaKeyParams,
8781 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008782
8783 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785
8786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8790 wdiSetSTAKeyRspCb, pEventData->pUserData,
8791 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008792
8793}/*WDI_ProcessSetSTABcastKeyReq*/
8794
8795/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008798
8799 @param pWDICtx: pointer to the WLAN DAL context
8800 pEventData: pointer to the event information structure
8801
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 @see
8803 @return Result of the function call
8804*/
8805WDI_Status
8806WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008807(
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 WDI_ControlBlockType* pWDICtx,
8809 WDI_EventInfoType* pEventData
8810)
8811{
8812 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8813 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8814 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 wpt_uint16 usDataOffset = 0;
8817 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 wpt_macAddr macBSSID;
8820 wpt_uint8 ucCurrentBSSSesIdx;
8821 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8823
8824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 -------------------------------------------------------------------------*/
8827 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8828 ( NULL == pEventData->pCBfnc ))
8829 {
8830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 }
8835
8836 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8837 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8838 /*-------------------------------------------------------------------------
8839 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 -------------------------------------------------------------------------*/
8842 wpalMutexAcquire(&pWDICtx->wptMutex);
8843
8844 /*------------------------------------------------------------------------
8845 Find the BSS for which the request is made and identify WDI session
8846 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8848 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 &macBSSID))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8852 "This station does not exist in the WDI Station Table %d");
8853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 }
8856
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008863
8864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008867
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 /*------------------------------------------------------------------------
8869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 ------------------------------------------------------------------------*/
8872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8873 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008877
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 }
8882
8883
8884
8885 wpalMutexRelease(&pWDICtx->wptMutex);
8886 /*-----------------------------------------------------------------------
8887 Get message buffer
8888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8891 &pSendBuffer, &usDataOffset, &usSendSize))||
8892 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8893 {
8894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8895 "Unable to get send buffer in set bss key req %x %x %x",
8896 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 }
8900
8901 /*-----------------------------------------------------------------------
8902 Copy the Key parameters into the HAL message
8903 -----------------------------------------------------------------------*/
8904
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8907
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8910
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8913
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8916
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 wpalMemoryCopy( pSendBuffer+usDataOffset,
8918 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8919 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008920
8921 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008923
8924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008930
8931}/*WDI_ProcessRemoveSTABcastKeyReq*/
8932
8933/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008935==========================================================================*/
8936/**
8937 @brief Process Add TSpec Request function (called when Main FSM
8938 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008939
8940 @param pWDICtx: pointer to the WLAN DAL context
8941 pEventData: pointer to the event information structure
8942
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 @see
8944 @return Result of the function call
8945*/
8946WDI_Status
8947WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008948(
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 WDI_ControlBlockType* pWDICtx,
8950 WDI_EventInfoType* pEventData
8951)
8952{
8953 WDI_AddTSReqParamsType* pwdiAddTSParams;
8954 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 wpt_uint16 usDataOffset = 0;
8959 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 wpt_macAddr macBSSID;
8962 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07008963
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8965
8966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 -------------------------------------------------------------------------*/
8969 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8970 ( NULL == pEventData->pCBfnc ))
8971 {
8972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 }
8977
8978 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
8979 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
8980 /*-------------------------------------------------------------------------
8981 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 -------------------------------------------------------------------------*/
8984 wpalMutexAcquire(&pWDICtx->wptMutex);
8985
8986 /*------------------------------------------------------------------------
8987 Find the BSS for which the request is made and identify WDI session
8988 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8990 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 &macBSSID))
8992 {
8993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8994 "This station does not exist in the WDI Station Table %d");
8995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 }
8998
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9000 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9003 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9004 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009005
9006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009009
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 /*------------------------------------------------------------------------
9011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 ------------------------------------------------------------------------*/
9014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9015 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9017 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9018 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009019
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 }
9024
9025 wpalMutexRelease(&pWDICtx->wptMutex);
9026 /*-----------------------------------------------------------------------
9027 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9031 sizeof(halAddTsParams),
9032 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 &usSendSize))||
9034 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9035 {
9036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9037 "Unable to get send buffer in set bss key req %x %x %x",
9038 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 }
9042
9043 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9044 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9045
9046 //TSPEC IE
9047 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9048 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9079
9080 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9095
9096 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9101
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 wpalMemoryCopy( pSendBuffer+usDataOffset,
9103 &halAddTsParams,
9104 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009108
9109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009115}/*WDI_ProcessAddTSpecReq*/
9116
9117
9118/**
9119 @brief Process Del TSpec Request function (called when Main FSM
9120 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009121
9122 @param pWDICtx: pointer to the WLAN DAL context
9123 pEventData: pointer to the event information structure
9124
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 @see
9126 @return Result of the function call
9127*/
9128WDI_Status
9129WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009130(
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 WDI_ControlBlockType* pWDICtx,
9132 WDI_EventInfoType* pEventData
9133)
9134{
9135 WDI_DelTSReqParamsType* pwdiDelTSParams;
9136 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 wpt_uint16 usDataOffset = 0;
9141 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9144
9145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 -------------------------------------------------------------------------*/
9148 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9149 ( NULL == pEventData->pCBfnc ))
9150 {
9151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 }
9156
9157 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9158 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9159
9160 /*-------------------------------------------------------------------------
9161 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 -------------------------------------------------------------------------*/
9164 wpalMutexAcquire(&pWDICtx->wptMutex);
9165
9166 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9170 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9171 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9176 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9177 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9178
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
9183 /*------------------------------------------------------------------------
9184 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 ------------------------------------------------------------------------*/
9187 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9188 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9190 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9191 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009192
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
9198
9199 wpalMutexRelease(&pWDICtx->wptMutex);
9200 /*-----------------------------------------------------------------------
9201 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9206 &pSendBuffer, &usDataOffset, &usSendSize))||
9207 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9208 {
9209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9210 "Unable to get send buffer in set bss key req %x %x %x",
9211 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 }
9215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 wpalMemoryCopy( pSendBuffer+usDataOffset,
9217 &pwdiDelTSParams->wdiDelTSInfo,
9218 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009219
9220 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009222
9223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9227 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009228}/*WDI_ProcessDelTSpecReq*/
9229
9230/**
9231 @brief Process Update EDCA Params Request function (called when
9232 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009233
9234 @param pWDICtx: pointer to the WLAN DAL context
9235 pEventData: pointer to the event information structure
9236
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 @see
9238 @return Result of the function call
9239*/
9240WDI_Status
9241WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009242(
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 WDI_ControlBlockType* pWDICtx,
9244 WDI_EventInfoType* pEventData
9245)
9246{
9247 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9248 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 wpt_uint16 usDataOffset = 0;
9253 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9256
9257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 -------------------------------------------------------------------------*/
9260 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9261 ( NULL == pEventData->pCBfnc ))
9262 {
9263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 }
9268
9269 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9270 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9271 /*-------------------------------------------------------------------------
9272 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 -------------------------------------------------------------------------*/
9275 wpalMutexAcquire(&pWDICtx->wptMutex);
9276
9277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9281 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9282 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009283
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 {
9286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9288 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009289
9290 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
9294 /*------------------------------------------------------------------------
9295 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 ------------------------------------------------------------------------*/
9298 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9299 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9301 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9302 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009303
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 }
9308
9309
9310 wpalMutexRelease(&pWDICtx->wptMutex);
9311 /*-----------------------------------------------------------------------
9312 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9317 &pSendBuffer, &usDataOffset, &usSendSize))||
9318 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9319 {
9320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9321 "Unable to get send buffer in set bss key req %x %x %x",
9322 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 }
9326
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 wpalMemoryCopy( pSendBuffer+usDataOffset,
9328 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9329 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009330
9331 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
9334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9338 wdiUpdateEDCARspCb, pEventData->pUserData,
9339 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009340}/*WDI_ProcessUpdateEDCAParamsReq*/
9341
9342/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009345
9346 @param pWDICtx: pointer to the WLAN DAL context
9347 pEventData: pointer to the event information structure
9348
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 @see
9350 @return Result of the function call
9351*/
9352WDI_Status
9353WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009354(
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 WDI_ControlBlockType* pWDICtx,
9356 WDI_EventInfoType* pEventData
9357)
9358{
9359 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9360 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 wpt_uint16 usDataOffset = 0;
9365 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 wpt_macAddr macBSSID;
9368
9369 tAddBASessionReqMsg halAddBASessionReq;
9370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9371
9372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 -------------------------------------------------------------------------*/
9375 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9376 ( NULL == pEventData->pCBfnc ))
9377 {
9378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 }
9383
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9388 /*-------------------------------------------------------------------------
9389 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -------------------------------------------------------------------------*/
9392 wpalMutexAcquire(&pWDICtx->wptMutex);
9393
9394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9398 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 &macBSSID))
9400 {
9401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9402 "This station does not exist in the WDI Station Table %d");
9403 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 }
9406
9407
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9413 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9414 __func__, MAC_ADDR_ARRAY(macBSSID));
9415
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 }
9419
9420 /*------------------------------------------------------------------------
9421 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 ------------------------------------------------------------------------*/
9424 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9425 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9427 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9428 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009429
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 }
9434
9435
9436 wpalMutexRelease(&pWDICtx->wptMutex);
9437 /*-----------------------------------------------------------------------
9438 Get message buffer
9439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9441 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 sizeof(halAddBASessionReq.addBASessionParams),
9443 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9446 {
9447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9448 "Unable to get send buffer in Add BA session req %x %x %x",
9449 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 }
9453
9454 halAddBASessionReq.addBASessionParams.staIdx =
9455 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9456 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9457 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9458 WDI_MAC_ADDR_LEN);
9459 halAddBASessionReq.addBASessionParams.baTID =
9460 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9461 halAddBASessionReq.addBASessionParams.baPolicy =
9462 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9463 halAddBASessionReq.addBASessionParams.baBufferSize =
9464 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9465 halAddBASessionReq.addBASessionParams.baTimeout =
9466 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9467 halAddBASessionReq.addBASessionParams.baSSN =
9468 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9469 halAddBASessionReq.addBASessionParams.baDirection =
9470 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9471
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 wpalMemoryCopy( pSendBuffer+usDataOffset,
9473 &halAddBASessionReq.addBASessionParams,
9474 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
9476 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478
9479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9483 wdiAddBASessionRspCb, pEventData->pUserData,
9484 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009485}/*WDI_ProcessAddBASessionReq*/
9486
9487/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009490
9491 @param pWDICtx: pointer to the WLAN DAL context
9492 pEventData: pointer to the event information structure
9493
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 @see
9495 @return Result of the function call
9496*/
9497WDI_Status
9498WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009499(
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 WDI_ControlBlockType* pWDICtx,
9501 WDI_EventInfoType* pEventData
9502)
9503{
9504 WDI_DelBAReqParamsType* pwdiDelBAParams;
9505 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 wpt_uint16 usDataOffset = 0;
9510 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 wpt_macAddr macBSSID;
9513 tDelBAParams halDelBAparam;
9514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9515
9516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 -------------------------------------------------------------------------*/
9519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9520 ( NULL == pEventData->pCBfnc ))
9521 {
9522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 }
9527
9528 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9529 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9530 /*-------------------------------------------------------------------------
9531 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -------------------------------------------------------------------------*/
9534 wpalMutexAcquire(&pWDICtx->wptMutex);
9535
9536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9540 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 &macBSSID))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9544 "This station does not exist in the WDI Station Table %d");
9545 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 }
9548
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9554 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9555 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009556
9557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 }
9560
9561 /*------------------------------------------------------------------------
9562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 ------------------------------------------------------------------------*/
9565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9568 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9569 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009570
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 }
9575
9576 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 sizeof(halDelBAparam),
9579 &pSendBuffer, &usDataOffset, &usSendSize))||
9580 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9581 {
9582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9583 "Unable to get send buffer for DEL BA req %x %x %x",
9584 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 }
9588
9589 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9590 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9591 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9592
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 wpalMemoryCopy( pSendBuffer+usDataOffset,
9594 &halDelBAparam,
9595 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009596
9597 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9604 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605}/*WDI_ProcessDelBAReq*/
9606
9607#ifdef FEATURE_WLAN_CCX
9608
9609WDI_Status
9610WDI_ProcessTSMStatsReq
9611(
9612 WDI_ControlBlockType* pWDICtx,
9613 WDI_EventInfoType* pEventData
9614)
9615{
9616 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9617 WDI_TsmRspCb wdiTSMRspCb;
9618 wpt_uint8 ucCurrentBSSSesIdx = 0;
9619 WDI_BSSSessionType* pBSSSes = NULL;
9620 wpt_uint8* pSendBuffer = NULL;
9621 wpt_uint16 usDataOffset = 0;
9622 wpt_uint16 usSendSize = 0;
9623 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9624 tTsmStatsParams halTsmStatsReqParams = {0};
9625
9626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9627
9628 /*-------------------------------------------------------------------------
9629 Sanity check
9630 -------------------------------------------------------------------------*/
9631 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9632 ( NULL == pEventData->pCBfnc ))
9633 {
9634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 WDI_ASSERT(0);
9637 return WDI_STATUS_E_FAILURE;
9638 }
9639
9640 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9641 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9642 /*-------------------------------------------------------------------------
9643 Check to see if we are in the middle of an association, if so queue, if
9644 not it means it is free to process request
9645 -------------------------------------------------------------------------*/
9646 wpalMutexAcquire(&pWDICtx->wptMutex);
9647
9648 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9649 if ( NULL == pBSSSes )
9650 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9652 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9653 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009654
9655 wpalMutexRelease(&pWDICtx->wptMutex);
9656 return WDI_STATUS_E_NOT_ALLOWED;
9657 }
9658
9659 /*------------------------------------------------------------------------
9660 Check if this BSS is being currently processed or queued,
9661 if queued - queue the new request as well
9662 ------------------------------------------------------------------------*/
9663 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9664 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9666 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9667 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009668
9669 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9670 wpalMutexRelease(&pWDICtx->wptMutex);
9671 return wdiStatus;
9672 }
9673
9674 wpalMutexRelease(&pWDICtx->wptMutex);
9675 /*-----------------------------------------------------------------------
9676 Get message buffer
9677 ! TO DO : proper conversion into the HAL Message Request Format
9678 -----------------------------------------------------------------------*/
9679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9680 sizeof(halTsmStatsReqParams),
9681 &pSendBuffer, &usDataOffset, &usSendSize))||
9682 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9683 {
9684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9685 "Unable to get send buffer in set bss key req %x %x %x",
9686 pEventData, pwdiTSMParams, wdiTSMRspCb);
9687 WDI_ASSERT(0);
9688 return WDI_STATUS_E_FAILURE;
9689 }
9690
9691 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9692 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9693 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9694 WDI_MAC_ADDR_LEN);
9695 wpalMemoryCopy( pSendBuffer+usDataOffset,
9696 &halTsmStatsReqParams,
9697 sizeof(halTsmStatsReqParams));
9698
9699 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9700 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9701
9702 /*-------------------------------------------------------------------------
9703 Send TSM Stats Request to HAL
9704 -------------------------------------------------------------------------*/
9705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9706 wdiTSMRspCb, pEventData->pUserData,
9707 WDI_TSM_STATS_RESP);
9708}/*WDI_ProcessTSMStatsReq*/
9709
9710#endif
9711
9712
9713/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009716
9717 @param pWDICtx: pointer to the WLAN DAL context
9718 pEventData: pointer to the event information structure
9719
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 @see
9721 @return Result of the function call
9722*/
9723WDI_Status
9724WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009725(
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_ControlBlockType* pWDICtx,
9727 WDI_EventInfoType* pEventData
9728)
9729{
9730 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9731 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 wpt_uint16 usDataOffset = 0;
9734 wpt_uint16 usSendSize = 0;
9735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9736
9737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 -------------------------------------------------------------------------*/
9740 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9741 ( NULL == pEventData->pCBfnc ))
9742 {
9743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 }
9748
9749 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9750 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9751 /*-----------------------------------------------------------------------
9752 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9757 &pSendBuffer, &usDataOffset, &usSendSize))||
9758 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9759 {
9760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9761 "Unable to get send buffer in set bss key req %x %x %x",
9762 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 wpalMemoryCopy( pSendBuffer+usDataOffset,
9768 &pwdiFlushAcParams->wdiFlushAcInfo,
9769 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009770
9771 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009773
9774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9778 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009779}/*WDI_ProcessFlushAcReq*/
9780
9781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009784
9785 @param pWDICtx: pointer to the WLAN DAL context
9786 pEventData: pointer to the event information structure
9787
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 @see
9789 @return Result of the function call
9790*/
9791WDI_Status
9792WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009793(
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 WDI_ControlBlockType* pWDICtx,
9795 WDI_EventInfoType* pEventData
9796)
9797{
9798 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9799 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 wpt_uint16 usDataOffset = 0;
9802 wpt_uint16 usSendSize = 0;
9803
9804 tBtAmpEventMsg haltBtAmpEventMsg;
9805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9806
9807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 -------------------------------------------------------------------------*/
9810 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9811 ( NULL == pEventData->pCBfnc ))
9812 {
9813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 }
9818
9819 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9820 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9821 /*-----------------------------------------------------------------------
9822 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9827 &pSendBuffer, &usDataOffset, &usSendSize))||
9828 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9829 {
9830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9831 "Unable to get send buffer in BT AMP event req %x %x %x",
9832 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 }
9836
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 wpalMemoryCopy( pSendBuffer+usDataOffset,
9840 &haltBtAmpEventMsg.btAmpEventParams,
9841 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009842
9843 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009845
9846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9850 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009851}/*WDI_ProcessBtAmpEventReq*/
9852
9853/**
9854 @brief Process Add STA self Request function (called when Main FSM
9855 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009856
9857 @param pWDICtx: pointer to the WLAN DAL context
9858 pEventData: pointer to the event information structure
9859
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 @see
9861 @return Result of the function call
9862*/
9863WDI_Status
9864WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009865(
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 WDI_ControlBlockType* pWDICtx,
9867 WDI_EventInfoType* pEventData
9868)
9869{
9870 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9871 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 wpt_uint16 usDataOffset = 0;
9874 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9877
9878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 -------------------------------------------------------------------------*/
9881 if (( NULL == pEventData ) ||
9882 ( NULL == pEventData->pEventData) ||
9883 ( NULL == pEventData->pCBfnc))
9884 {
9885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 }
9890
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9895 /*-----------------------------------------------------------------------
9896 Get message buffer
9897 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9899 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 sizeof(tAddStaSelfParams),
9901 &pSendBuffer, &usDataOffset, &usSendSize))||
9902 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9903 {
9904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9905 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9906 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 }
9910
9911 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9914
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9917
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9919 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9928 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9929 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930}/*WDI_ProcessAddSTASelfReq*/
9931
9932
9933
9934/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009937
9938 @param pWDICtx: pointer to the WLAN DAL context
9939 pEventData: pointer to the event information structure
9940
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 @see
9942 @return Result of the function call
9943*/
9944WDI_Status
9945WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009946(
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 WDI_ControlBlockType* pWDICtx,
9948 WDI_EventInfoType* pEventData
9949)
9950{
9951 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
9952 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 wpt_uint16 usDataOffset = 0;
9955 wpt_uint16 usSendSize = 0;
9956 tDelStaSelfParams halSetDelSelfSTAParams;
9957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9958
9959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 -------------------------------------------------------------------------*/
9962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9963 ( NULL == pEventData->pCBfnc ))
9964 {
9965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 }
9970
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
9973 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
9974
9975 /*-----------------------------------------------------------------------
9976 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
9981 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
9984 {
9985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9986 "Unable to get send buffer in Del Sta Self req %x %x %x",
9987 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
9988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 }
9991
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
9994
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
9996 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009997
9998 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010000
10001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10005 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_DEL_STA_SELF_RESP);
10007
10008}
10009
Jeff Johnsone7245742012-09-05 17:12:55 -070010010#ifdef FEATURE_OEM_DATA_SUPPORT
10011/**
10012 @brief Process Start Oem Data Request function (called when Main
10013 FSM allows it)
10014
10015 @param pWDICtx: pointer to the WLAN DAL context
10016 pEventData: pointer to the event information structure
10017
10018 @see
10019 @return Result of the function call
10020*/
10021WDI_Status
10022WDI_ProcessStartOemDataReq
10023(
10024 WDI_ControlBlockType* pWDICtx,
10025 WDI_EventInfoType* pEventData
10026)
10027{
10028 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10029 WDI_oemDataRspCb wdiOemDataRspCb;
10030 wpt_uint8* pSendBuffer = NULL;
10031 wpt_uint16 usDataOffset = 0;
10032 wpt_uint16 usSendSize = 0;
10033 wpt_uint16 reqLen;
10034 tStartOemDataReqParams* halStartOemDataReqParams;
10035
10036 /*-------------------------------------------------------------------------
10037 Sanity check
10038 -------------------------------------------------------------------------*/
10039 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10040 ( NULL == pEventData->pCBfnc ))
10041 {
10042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010043 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 WDI_ASSERT(0);
10045 return WDI_STATUS_E_FAILURE;
10046 }
10047
10048 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10049 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10050
10051 /*-----------------------------------------------------------------------
10052 Get message buffer
10053 -----------------------------------------------------------------------*/
10054
10055 reqLen = sizeof(tStartOemDataReqParams);
10056
10057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10058 WDI_START_OEM_DATA_REQ, reqLen,
10059 &pSendBuffer, &usDataOffset, &usSendSize))||
10060 (usSendSize < (usDataOffset + reqLen)))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10063 "Unable to get send buffer in Start Oem Data req %x %x %x",
10064 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10065 WDI_ASSERT(0);
10066 return WDI_STATUS_E_FAILURE;
10067 }
10068
10069 //copying WDI OEM DATA REQ PARAMS to shared memory
10070 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10071
10072 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10073 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10074
10075 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10076 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10077
10078 /*-------------------------------------------------------------------------
10079 Send Start Request to HAL
10080 -------------------------------------------------------------------------*/
10081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10082 wdiOemDataRspCb, pEventData->pUserData,
10083 WDI_START_OEM_DATA_RESP);
10084}/*WDI_ProcessStartOemDataReq*/
10085#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
10087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010090
10091 @param pWDICtx: pointer to the WLAN DAL context
10092 pEventData: pointer to the event information structure
10093
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 @see
10095 @return Result of the function call
10096*/
10097WDI_Status
10098WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010099(
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 WDI_ControlBlockType* pWDICtx,
10101 WDI_EventInfoType* pEventData
10102)
10103{
10104 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10105 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 wpt_uint16 usDataOffset = 0;
10108 wpt_uint16 usSendSize = 0;
10109 tHalWlanHostResumeReqParam halResumeReqParams;
10110
10111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10112
10113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 -------------------------------------------------------------------------*/
10116 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10117 ( NULL == pEventData->pCBfnc ))
10118 {
10119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010120 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 }
10124
10125 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10126 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10127
10128 /*-----------------------------------------------------------------------
10129 Get message buffer
10130 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10133 &pSendBuffer, &usDataOffset, &usSendSize))||
10134 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10135 {
10136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 }
10142
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010145
10146 wpalMemoryCopy( pSendBuffer+usDataOffset,
10147 &halResumeReqParams,
10148 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010149
10150 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152
10153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10157 wdiHostResumeRspCb, pEventData->pUserData,
10158 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010159}/*WDI_ProcessHostResumeReq*/
10160
10161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010164
10165 @param pWDICtx: pointer to the WLAN DAL context
10166 pEventData: pointer to the event information structure
10167
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 @see
10169 @return Result of the function call
10170*/
10171WDI_Status
10172WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010173(
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 WDI_ControlBlockType* pWDICtx,
10175 WDI_EventInfoType* pEventData
10176)
10177{
10178 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10179 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 wpt_uint16 usDataOffset = 0;
10182 wpt_uint16 usSendSize = 0;
10183 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10185
10186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 -------------------------------------------------------------------------*/
10189 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10190 ( NULL == pEventData->pCBfnc ))
10191 {
10192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010193 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 }
10197
10198 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10199 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010200
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 /*-----------------------------------------------------------------------
10202 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 sizeof(halTxPerTrackingReqParam),
10207 &pSendBuffer, &usDataOffset, &usSendSize))||
10208 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10209 {
10210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10211 "Unable to get send buffer in set tx per tracking req %x %x %x",
10212 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010216
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10218 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10219 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10220 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010221
10222 wpalMemoryCopy( pSendBuffer+usDataOffset,
10223 &halTxPerTrackingReqParam,
10224 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010225
10226 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010228
10229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010230 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10233 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010234}/*WDI_ProcessSetTxPerTrackingReq*/
10235
10236/*=========================================================================
10237 Indications
10238=========================================================================*/
10239
10240/**
10241 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010242
10243 @param pWDICtx: pointer to the WLAN DAL context
10244 pEventData: pointer to the event information structure
10245
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 @see
10247 @return Result of the function call
10248*/
10249WDI_Status
10250WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010251(
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 WDI_ControlBlockType* pWDICtx,
10253 WDI_EventInfoType* pEventData
10254)
10255{
10256 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 wpt_uint16 usDataOffset = 0;
10259 wpt_uint16 usSendSize = 0;
10260 WDI_Status wdiStatus;
10261 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10263
10264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 -------------------------------------------------------------------------*/
10267 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10268 {
10269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010270 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 }
10274
10275 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10276
10277 /*-----------------------------------------------------------------------
10278 Get message buffer
10279 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10281 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 sizeof(halWlanSuspendIndparams),
10283 &pSendBuffer, &usDataOffset, &usSendSize))||
10284 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10285 {
10286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10287 "Unable to get send buffer in Suspend Ind ");
10288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 }
10291
10292 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10293 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10294
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 WDI_GetActiveSessionsCount(pWDICtx);
10297
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10299 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010300
10301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 -------------------------------------------------------------------------*/
10304 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10309}/*WDI_ProcessHostSuspendInd*/
10310
10311/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010313==========================================================================*/
10314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010317
10318 @param pWDICtx: pointer to the WLAN DAL context
10319 pEventData: pointer to the event information structure
10320
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 @see
10322 @return Result of the function call
10323*/
10324WDI_Status
10325WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010326(
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 WDI_ControlBlockType* pWDICtx,
10328 WDI_EventInfoType* pEventData
10329)
10330{
10331 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10332 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 wpt_uint16 usDataOffset = 0;
10335 wpt_uint16 usSendSize = 0;
10336 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10338
10339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 -------------------------------------------------------------------------*/
10342 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10343 ( NULL == pEventData->pCBfnc ))
10344 {
10345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 }
10350
10351 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10352 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10353 /*-----------------------------------------------------------------------
10354 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 sizeof(halSwitchChannelReq.switchChannelParams),
10359 &pSendBuffer, &usDataOffset, &usSendSize))||
10360 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10361 {
10362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10363 "Unable to get send buffer in channel switch req %x %x %x",
10364 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 }
10368
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371#ifndef WLAN_FEATURE_VOWIFI
10372 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10374#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10377
10378#ifdef WLAN_FEATURE_VOWIFI
10379 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10382 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10383 WDI_MAC_ADDR_LEN);
10384 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10385 pwdiSwitchChParams->wdiChInfo.macBSSId,
10386 WDI_MAC_ADDR_LEN);
10387#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 wpalMemoryCopy( pSendBuffer+usDataOffset,
10389 &halSwitchChannelReq.switchChannelParams,
10390 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
10392 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394
10395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10399 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010400}/*WDI_ProcessChannelSwitchReq*/
10401
10402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010405
10406 @param pWDICtx: pointer to the WLAN DAL context
10407 pEventData: pointer to the event information structure
10408
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 @see
10410 @return Result of the function call
10411*/
10412WDI_Status
10413WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010414(
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 WDI_ControlBlockType* pWDICtx,
10416 WDI_EventInfoType* pEventData
10417)
10418{
10419 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10420 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 wpt_uint16 usDataOffset = 0;
10425 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010427
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 tConfigStaReqMsg halConfigStaReqMsg;
10429 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10431
10432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 -------------------------------------------------------------------------*/
10435 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10436 ( NULL == pEventData->pCBfnc ))
10437 {
10438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 }
10443
10444 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10445 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10446 /*-------------------------------------------------------------------------
10447 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 -------------------------------------------------------------------------*/
10450 wpalMutexAcquire(&pWDICtx->wptMutex);
10451
10452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10456 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10457 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010458
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10462 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10463 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010464
10465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 }
10468
10469 /*------------------------------------------------------------------------
10470 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 ------------------------------------------------------------------------*/
10473 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10474 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10476 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10477 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010478
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 }
10483
10484 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010485
10486 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10487#ifdef WLAN_FEATURE_11AC
10488 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010489 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 else
10491#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010492 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010493
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 /*-----------------------------------------------------------------------
10495 Get message buffer
10496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10498 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 {
10502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10503 "Unable to get send buffer in config sta req %x %x %x",
10504 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 }
10508
10509 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 &pwdiConfigSTAParams->wdiReqInfo);
10512
10513 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10514 {
10515 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 WDI_STATableFindStaidByAddr(pWDICtx,
10518 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 {
10521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10522 "This station does not exist in the WDI Station Table %d");
10523 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010524 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 }
10527 }
10528 else
10529 {
10530 /* Need to fill in the STA Index to invalid, since at this point we have not
10531 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 }
10534
10535 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010537
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 wpalMemoryCopy( pSendBuffer+usDataOffset,
10539 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010540 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010541
10542 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10546 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 sizeof(pWDICtx->wdiCachedConfigStaReq));
10548
10549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10553 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010554}/*WDI_ProcessConfigStaReq*/
10555
10556
10557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010560
10561 @param pWDICtx: pointer to the WLAN DAL context
10562 pEventData: pointer to the event information structure
10563
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 @see
10565 @return Result of the function call
10566*/
10567WDI_Status
10568WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010569(
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 WDI_ControlBlockType* pWDICtx,
10571 WDI_EventInfoType* pEventData
10572)
10573{
10574 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10575 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 wpt_uint16 usDataOffset = 0;
10580 wpt_uint16 usSendSize = 0;
10581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10584
10585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -------------------------------------------------------------------------*/
10588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10589 ( NULL == pEventData->pCBfnc ))
10590 {
10591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 }
10596
10597 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10598 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10599 /*-------------------------------------------------------------------------
10600 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 -------------------------------------------------------------------------*/
10603 wpalMutexAcquire(&pWDICtx->wptMutex);
10604
10605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10609 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10610 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10616 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 }
10618 else
10619 {
10620 /*------------------------------------------------------------------------
10621 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 ------------------------------------------------------------------------*/
10624 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10625 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10627 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10628 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10629
10630 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 }
10634 }
10635 /* If the link is set to enter IDLE - the Session allocated for this BSS
10636 will be deleted on the Set Link State response coming from HAL
10637 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10640
10641 wpalMutexRelease(&pWDICtx->wptMutex);
10642 /*-----------------------------------------------------------------------
10643 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010646
10647 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 sizeof(halLinkStateReqMsg),
10649 &pSendBuffer, &usDataOffset, &usSendSize))||
10650 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10653 "Unable to get send buffer in set bss key req %x %x %x",
10654 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 }
10658
10659 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10660 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10661
10662 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10663 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10664
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10667
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 wpalMemoryCopy( pSendBuffer+usDataOffset,
10669 &halLinkStateReqMsg,
10670 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010671
10672 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010674
10675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 Send Set Link State 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 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010680}/*WDI_ProcessSetLinkStateReq*/
10681
10682
10683/**
10684 @brief Process Get Stats Request function (called when Main FSM
10685 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_ProcessGetStatsReq
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_GetStatsReqParamsType* pwdiGetStatsParams;
10701 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 wpt_uint16 usDataOffset = 0;
10704 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 WDI_BSSSessionType* pBSSSes = NULL;
10707 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 tHalStatsReqMsg halStatsReqMsg;
10710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10711
10712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 -------------------------------------------------------------------------*/
10715 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10716 ( NULL == pEventData->pCBfnc ) )
10717 {
10718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 }
10723
10724 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10725 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10726
10727 /*-------------------------------------------------------------------------
10728 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 -------------------------------------------------------------------------*/
10731 wpalMutexAcquire(&pWDICtx->wptMutex);
10732
10733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10737 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 &macBSSID))
10739 {
10740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10741 "This station does not exist in the WDI Station Table %d");
10742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 }
10745
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10747 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10750 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10751 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010752
10753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 }
10756
10757 /*------------------------------------------------------------------------
10758 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 ------------------------------------------------------------------------*/
10761 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10762 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10764 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10765 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010766
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 }
10771
10772
10773 wpalMutexRelease(&pWDICtx->wptMutex);
10774
10775 /*-----------------------------------------------------------------------
10776 Get message buffer
10777 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 sizeof(halStatsReqMsg.statsReqParams),
10780 &pSendBuffer, &usDataOffset, &usSendSize))||
10781 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10782 {
10783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10784 "Unable to get send buffer in set bss key req %x %x %x",
10785 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 }
10789
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 wpalMemoryCopy( pSendBuffer+usDataOffset,
10795 &halStatsReqMsg.statsReqParams,
10796 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010797
10798 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010800
10801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Send Get STA 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 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010806}/*WDI_ProcessGetStatsReq*/
10807
10808/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010811
10812 @param pWDICtx: pointer to the WLAN DAL context
10813 pEventData: pointer to the event information structure
10814
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 @see
10816 @return Result of the function call
10817*/
10818WDI_Status
10819WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010820(
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 WDI_ControlBlockType* pWDICtx,
10822 WDI_EventInfoType* pEventData
10823)
10824{
10825 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
10826 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
10827
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;
10831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10832
10833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 -------------------------------------------------------------------------*/
10836 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10837 ( NULL == pEventData->pCBfnc))
10838 {
10839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 }
10844
10845 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
10846 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
10847
10848 /*-----------------------------------------------------------------------
10849 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 -----------------------------------------------------------------------*/
10852
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
10855 &pSendBuffer, &usDataOffset, &usSendSize))||
10856 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
10857 {
10858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10859 "Unable to get send buffer in set bss key req %x %x %x",
10860 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
10861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 }
10864
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 wpalMemoryCopy( pSendBuffer+usDataOffset,
10866 &pwdiUpdateCfgParams->uConfigBufferLen,
10867 sizeof(wpt_uint32));
10868 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
10869 pwdiUpdateCfgParams->pConfigBuffer,
10870 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070010871
10872 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
10875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 -------------------------------------------------------------------------*/
10878
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10880 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010881
10882}/*WDI_ProcessUpdateCfgReq*/
10883
10884
10885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010888
10889 @param pWDICtx: pointer to the WLAN DAL context
10890 pEventData: pointer to the event information structure
10891
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 @see
10893 @return Result of the function call
10894*/
10895WDI_Status
10896WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010897(
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 WDI_ControlBlockType* pWDICtx,
10899 WDI_EventInfoType* pEventData
10900)
10901{
10902 WDI_AddBAReqParamsType* pwdiAddBAParams;
10903 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 wpt_uint16 usDataOffset = 0;
10908 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 wpt_macAddr macBSSID;
10911
10912 tAddBAReqMsg halAddBAReq;
10913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10914
10915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 -------------------------------------------------------------------------*/
10918 if (( NULL == pEventData ) ||
10919 ( NULL == pEventData->pEventData) ||
10920 ( NULL == pEventData->pCBfnc ))
10921 {
10922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 }
10927
10928 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
10929 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
10930
10931 /*-------------------------------------------------------------------------
10932 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 -------------------------------------------------------------------------*/
10935 wpalMutexAcquire(&pWDICtx->wptMutex);
10936
10937 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10941 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 &macBSSID))
10943 {
10944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10945 "This station does not exist in the WDI Station Table %d");
10946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 }
10949
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10951 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10954 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10955 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010956
10957 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010959 }
10960
10961 /*------------------------------------------------------------------------
10962 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 ------------------------------------------------------------------------*/
10965 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10966 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10968 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10969 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010970
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010974 }
10975
10976
10977 wpalMutexRelease(&pWDICtx->wptMutex);
10978 /*-----------------------------------------------------------------------
10979 Get message buffer
10980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 sizeof(halAddBAReq.addBAParams),
10983 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
10986 {
10987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10988 "Unable to get send buffer in Add BA req %x %x %x",
10989 pEventData, pwdiAddBAParams, wdiAddBARspCb);
10990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 }
10993
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
10996 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
10997#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11000#endif
11001
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 wpalMemoryCopy( pSendBuffer+usDataOffset,
11003 &halAddBAReq.addBAParams,
11004 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011005
11006 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011008
11009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11013 wdiAddBARspCb, pEventData->pUserData,
11014 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011015}/*WDI_ProcessAddBAReq*/
11016
11017
11018
11019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011022
11023 @param pWDICtx: pointer to the WLAN DAL context
11024 pEventData: pointer to the event information structure
11025
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 @see
11027 @return Result of the function call
11028*/
11029WDI_Status
11030WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011031(
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 WDI_ControlBlockType* pWDICtx,
11033 WDI_EventInfoType* pEventData
11034)
11035{
11036 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11037 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 wpt_uint16 usDataOffset = 0;
11042 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 wpt_uint16 index;
11045 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011046
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 tTriggerBAReqMsg halTriggerBAReq;
11048 tTriggerBaReqCandidate* halTriggerBACandidate;
11049 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11051
11052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011054 -------------------------------------------------------------------------*/
11055 if (( NULL == pEventData ) ||
11056 ( NULL == pEventData->pEventData ) ||
11057 ( NULL == pEventData->pCBfnc ))
11058 {
11059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 }
11064
11065 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11066 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11067 /*-------------------------------------------------------------------------
11068 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011069 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011070 -------------------------------------------------------------------------*/
11071 wpalMutexAcquire(&pWDICtx->wptMutex);
11072
11073 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11077 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 &macBSSID))
11079 {
11080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11081 "This station does not exist in the WDI Station Table %d");
11082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 }
11085
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11087 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11090 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11091 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011092
11093 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 }
11096
11097 /*------------------------------------------------------------------------
11098 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 ------------------------------------------------------------------------*/
11101 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11102 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11104 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11105 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011106
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011110 }
11111
11112
11113 wpalMutexRelease(&pWDICtx->wptMutex);
11114 /*-----------------------------------------------------------------------
11115 Get message buffer
11116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11118 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11122 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11127 {
11128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11129 "Unable to get send buffer in Trigger BA req %x %x %x",
11130 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 }
11134
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11139
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 wpalMemoryCopy( pSendBuffer+usDataOffset,
11141 &halTriggerBAReq.triggerBAParams,
11142 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011143
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11146 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11147 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011148
11149 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 index++)
11151 {
11152 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11153 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11154 halTriggerBACandidate++;
11155 wdiTriggerBACandidate++;
11156 }
11157
11158 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011159 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011160
11161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011162 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11165 wdiTriggerBARspCb, pEventData->pUserData,
11166 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167}/*WDI_ProcessTriggerBAReq*/
11168
11169
11170
11171/**
11172 @brief Process Update Beacon Params Request function (called when Main FSM
11173 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011174
11175 @param pWDICtx: pointer to the WLAN DAL context
11176 pEventData: pointer to the event information structure
11177
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 @see
11179 @return Result of the function call
11180*/
11181WDI_Status
11182WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011183(
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 WDI_ControlBlockType* pWDICtx,
11185 WDI_EventInfoType* pEventData
11186)
11187{
11188 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11189 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011190 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011191 wpt_uint16 usDataOffset = 0;
11192 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11195
11196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 -------------------------------------------------------------------------*/
11199 if (( NULL == pEventData ) ||
11200 ( NULL == pEventData->pEventData) ||
11201 ( NULL == pEventData->pCBfnc))
11202 {
11203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011207 }
11208
11209 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11210 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11211 /*-----------------------------------------------------------------------
11212 Get message buffer
11213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 sizeof(halUpdateBeaconParams),
11216 &pSendBuffer, &usDataOffset, &usSendSize))||
11217 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11218 {
11219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11220 "Unable to get send buffer in set bss key req %x %x %x",
11221 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 }
11225
11226 /*BSS Index of the BSS*/
11227 halUpdateBeaconParams.bssIdx =
11228 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11229 /*shortPreamble mode. HAL should update all the STA rates when it
11230 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11233 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11236 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011238 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11239
11240 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011245 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011246 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11253 halUpdateBeaconParams.fRIFSMode =
11254 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011255 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11257
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11259 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011260
11261 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011263
11264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011265 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11268 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011269}/*WDI_ProcessUpdateBeaconParamsReq*/
11270
11271
11272
11273/**
11274 @brief Process Send Beacon template Request function (called when Main FSM
11275 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011276
11277 @param pWDICtx: pointer to the WLAN DAL context
11278 pEventData: pointer to the event information structure
11279
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 @see
11281 @return Result of the function call
11282*/
11283WDI_Status
11284WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011285(
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 WDI_ControlBlockType* pWDICtx,
11287 WDI_EventInfoType* pEventData
11288)
11289{
11290 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11291 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011292 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 wpt_uint16 usDataOffset = 0;
11294 wpt_uint16 usSendSize = 0;
11295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11296
11297 tSendBeaconReqMsg halSendBeaconReq;
11298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 -------------------------------------------------------------------------*/
11301 if (( NULL == pEventData ) ||
11302 ( NULL == pEventData->pEventData ) ||
11303 ( NULL == pEventData->pCBfnc ))
11304 {
11305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 }
11310
11311 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11312 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11313 /*-----------------------------------------------------------------------
11314 Get message buffer
11315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 sizeof(halSendBeaconReq.sendBeaconParam),
11318 &pSendBuffer, &usDataOffset, &usSendSize))||
11319 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11320 {
11321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11322 "Unable to get send buffer in send beacon req %x %x %x",
11323 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 }
11327
11328 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11329 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11330 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11333 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11334 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11335 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
11336#ifdef WLAN_SOFTAP_FEATURE
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
11339#endif
11340#ifdef WLAN_FEATURE_P2P
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
11343#endif
11344
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 wpalMemoryCopy( pSendBuffer+usDataOffset,
11346 &halSendBeaconReq.sendBeaconParam,
11347 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011348
11349 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011351
11352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11356 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011357}/*WDI_ProcessSendBeaconParamsReq*/
11358
11359/**
11360 @brief Process Update Beacon Params Request function (called when Main FSM
11361 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011362
11363 @param pWDICtx: pointer to the WLAN DAL context
11364 pEventData: pointer to the event information structure
11365
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 @see
11367 @return Result of the function call
11368*/
11369WDI_Status
11370WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011371(
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 WDI_ControlBlockType* pWDICtx,
11373 WDI_EventInfoType* pEventData
11374)
11375{
11376 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11377 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 wpt_uint16 usDataOffset = 0;
11380 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11383
11384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 -------------------------------------------------------------------------*/
11387 if (( NULL == pEventData ) ||
11388 ( NULL == pEventData->pEventData) ||
11389 ( NULL == pEventData->pCBfnc))
11390 {
11391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 }
11396
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11401 /*-----------------------------------------------------------------------
11402 Get message buffer
11403 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 sizeof(halUpdateProbeRspTmplParams),
11406 &pSendBuffer, &usDataOffset, &usSendSize))||
11407 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11408 {
11409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11410 "Unable to get send buffer in set bss key req %x %x %x",
11411 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 }
11415
11416 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 WDI_MAC_ADDR_LEN);
11419
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11422
11423 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11424 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
11427
11428 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11429 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11430 WDI_PROBE_REQ_BITMAP_IE_LEN);
11431
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 wpalMemoryCopy( pSendBuffer+usDataOffset,
11433 &halUpdateProbeRspTmplParams,
11434 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011435
11436 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011438
11439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11443 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11444 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011445}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11446
11447/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011448 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011450
11451 @param pWDICtx: pointer to the WLAN DAL context
11452 pEventData: pointer to the event information structure
11453
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 @see
11455 @return Result of the function call
11456*/
11457WDI_Status
11458WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011459(
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 WDI_ControlBlockType* pWDICtx,
11461 WDI_EventInfoType* pEventData
11462)
11463{
11464
11465 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11466 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11467
11468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 -------------------------------------------------------------------------*/
11471 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11476 {
11477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 }
11482
11483 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11486
11487 /*cache the wdi nv request message here if the the first fragment
11488 * To issue the request to HAL for the next fragment */
11489 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11490 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11492 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11494
11495 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11496 pWDICtx->pRspCBUserData = pEventData->pUserData;
11497 }
11498
11499 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11500}
11501
11502/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011505
11506 @param pWDICtx: pointer to the WLAN DAL context
11507 pEventData: pointer to the event information structure
11508
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 @see
11510 @return Result of the function call
11511*/
11512WDI_Status WDI_ProcessSetMaxTxPowerReq
11513(
11514 WDI_ControlBlockType* pWDICtx,
11515 WDI_EventInfoType* pEventData
11516)
11517{
11518 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11519 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 wpt_uint16 usDataOffset = 0;
11522 wpt_uint16 usSendSize = 0;
11523 tSetMaxTxPwrReq halSetMaxTxPower;
11524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11525
11526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 -------------------------------------------------------------------------*/
11529 if (( NULL == pEventData ) ||
11530 ( NULL == pEventData->pEventData ) ||
11531 ( NULL == pEventData->pCBfnc ))
11532 {
11533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11542
11543 /*-----------------------------------------------------------------------
11544 Get message buffer
11545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011546if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11548 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011550)))
11551 {
11552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11553 "Unable to get Set Max Tx Power req %x %x %x",
11554 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 }
11558
11559 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11560 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11561 WDI_MAC_ADDR_LEN);
11562
11563 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11564 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11565 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011568
11569 wpalMemoryCopy( pSendBuffer+usDataOffset,
11570 &halSetMaxTxPower.setMaxTxPwrParams,
11571 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011572
11573 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011575
11576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11580 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11581 WDI_SET_MAX_TX_POWER_RESP);
11582
Jeff Johnson295189b2012-06-20 16:38:30 -070011583}
11584
11585#ifdef WLAN_FEATURE_P2P
11586
11587/**
11588 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11589 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011590
11591 @param pWDICtx: pointer to the WLAN DAL context
11592 pEventData: pointer to the event information structure
11593
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 @see
11595 @return Result of the function call
11596*/
11597WDI_Status
11598WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011599(
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 WDI_ControlBlockType* pWDICtx,
11601 WDI_EventInfoType* pEventData
11602)
11603{
11604 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11605 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 wpt_uint16 usDataOffset = 0;
11608 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11611
11612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 -------------------------------------------------------------------------*/
11615 if (( NULL == pEventData ) ||
11616 ( NULL == pEventData->pEventData) ||
11617 ( NULL == pEventData->pCBfnc))
11618 {
11619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 }
11624
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11629 /*-----------------------------------------------------------------------
11630 Get message buffer
11631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11633 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 sizeof(halSetP2PGONOAParams),
11635 &pSendBuffer, &usDataOffset, &usSendSize))||
11636 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11637 {
11638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11639 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11640 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 }
11644
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011647 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11649 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11658
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 wpalMemoryCopy( pSendBuffer+usDataOffset,
11660 &halSetP2PGONOAParams,
11661 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011662
11663 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011665
11666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11670 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11671 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011672}/*WDI_ProcessP2PGONOAReq*/
11673
11674#endif
11675
11676
11677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 @param None
11681
11682 @see
11683 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011684*/
11685void
11686WDI_SetPowerStateCb
11687(
11688 wpt_status status,
11689 unsigned int dxePhyAddr,
11690 void *pContext
11691)
11692{
11693 wpt_status wptStatus;
11694 WDI_ControlBlockType *pCB = NULL;
11695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11696 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11697 {
11698 //it shouldn't happen, put an error msg
11699 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 /*
11701 * Trigger the event to bring the Enter BMPS req function to come
11702 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011703*/
11704 if( NULL != pContext )
11705 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 }
11708 else
11709 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 pCB = &gWDICb;
11712 }
11713 pCB->dxePhyAddr = dxePhyAddr;
11714 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11715 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11716 {
11717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11718 "Failed to set an event");
11719
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011721 }
11722 return;
11723}
11724
11725
11726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011728 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011729
11730 @param pWDICtx: pointer to the WLAN DAL context
11731 pEventData: pointer to the event information structure
11732
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 @see
11734 @return Result of the function call
11735*/
11736WDI_Status
11737WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011738(
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 WDI_ControlBlockType* pWDICtx,
11740 WDI_EventInfoType* pEventData
11741)
11742{
Jeff Johnson43971f52012-07-17 12:26:56 -070011743 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
11748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11749
11750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 -------------------------------------------------------------------------*/
11753 if (( NULL == pEventData ) ||
11754 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
11755 {
11756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 }
11761
11762 /*-----------------------------------------------------------------------
11763 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 0,
11768 &pSendBuffer, &usDataOffset, &usSendSize))||
11769 ( usSendSize < (usDataOffset )))
11770 {
11771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11772 "Unable to get send buffer in Enter IMPS req %x %x",
11773 pEventData, wdiEnterImpsRspCb);
11774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 }
11777
11778 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011779 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11780 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 {
11782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11783 "WDI Init failed to reset an event");
11784
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 return VOS_STATUS_E_FAILURE;
11787 }
11788
11789 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011790 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
11791 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
11792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11793 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
11794 WDI_ASSERT(0);
11795 return WDI_STATUS_E_FAILURE;
11796 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011797
11798 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011801 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11802 WDI_SET_POWER_STATE_TIMEOUT);
11803 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 {
11805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11806 "WDI Init failed to wait on an event");
11807
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 return VOS_STATUS_E_FAILURE;
11810 }
11811
11812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11816 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011817}/*WDI_ProcessEnterImpsReq*/
11818
11819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011822
11823 @param pWDICtx: pointer to the WLAN DAL context
11824 pEventData: pointer to the event information structure
11825
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 @see
11827 @return Result of the function call
11828*/
11829WDI_Status
11830WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011831(
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 WDI_ControlBlockType* pWDICtx,
11833 WDI_EventInfoType* pEventData
11834)
11835{
11836 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 wpt_uint16 usDataOffset = 0;
11839 wpt_uint16 usSendSize = 0;
11840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11841
11842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011844 -------------------------------------------------------------------------*/
11845 if (( NULL == pEventData ) ||
11846 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
11847 {
11848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 }
11853
11854 /*-----------------------------------------------------------------------
11855 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 0,
11860 &pSendBuffer, &usDataOffset, &usSendSize))||
11861 ( usSendSize < (usDataOffset )))
11862 {
11863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11864 "Unable to get send buffer in Exit IMPS req %x %x",
11865 pEventData, wdiExitImpsRspCb);
11866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 }
11869
11870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011873 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11874 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011875}/*WDI_ProcessExitImpsReq*/
11876
11877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011880
11881 @param pWDICtx: pointer to the WLAN DAL context
11882 pEventData: pointer to the event information structure
11883
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 @see
11885 @return Result of the function call
11886*/
11887WDI_Status
11888WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011889(
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 WDI_ControlBlockType* pWDICtx,
11891 WDI_EventInfoType* pEventData
11892)
11893{
11894 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
11895 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 wpt_uint16 usDataOffset = 0;
11898 wpt_uint16 usSendSize = 0;
11899 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070011900 wpt_status wptStatus;
11901
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11903
11904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 -------------------------------------------------------------------------*/
11907 if (( NULL == pEventData ) ||
11908 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
11909 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
11910 {
11911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 }
11916
11917 /*-----------------------------------------------------------------------
11918 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 sizeof(enterBmpsReq),
11923 &pSendBuffer, &usDataOffset, &usSendSize))||
11924 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
11925 {
11926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11927 "Unable to get send buffer in Enter BMPS req %x %x %x",
11928 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
11929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 }
11932
11933 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070011934 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
11935 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 {
11937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11938 "WDI Init failed to reset an event");
11939
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 return VOS_STATUS_E_FAILURE;
11942 }
11943
11944 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011945 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
11946 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11947 {
11948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11949 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
11950 WDI_ASSERT(0);
11951 return WDI_STATUS_E_FAILURE;
11952 }
Jeff Johnson295189b2012-06-20 16:38:30 -070011953
11954/*
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 */
Jeff Johnson43971f52012-07-17 12:26:56 -070011957 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
11958 WDI_SET_POWER_STATE_TIMEOUT);
11959 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 {
11961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11962 "WDI Init failed to wait on an event");
11963
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 WDI_ASSERT(0);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080011965 return VOS_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 }
11967
11968 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
11969
11970 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
11971 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
11972 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
11973 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
11974
11975 // For CCX and 11R Roaming
11976 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
11977 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
11978 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
11979
11980 wpalMemoryCopy( pSendBuffer+usDataOffset,
11981 &enterBmpsReq,
11982 sizeof(enterBmpsReq));
11983
11984 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011986
11987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11991 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011992}/*WDI_ProcessEnterBmpsReq*/
11993
11994/**
11995 @brief Process Exit BMPS Request function (called when Main FSM
11996 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011997
11998 @param pWDICtx: pointer to the WLAN DAL context
11999 pEventData: pointer to the event information structure
12000
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 @see
12002 @return Result of the function call
12003*/
12004WDI_Status
12005WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012006(
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 WDI_ControlBlockType* pWDICtx,
12008 WDI_EventInfoType* pEventData
12009)
12010{
12011 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12012 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 wpt_uint16 usDataOffset = 0;
12015 wpt_uint16 usSendSize = 0;
12016 tHalExitBmpsReqParams exitBmpsReq;
12017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12018
12019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -------------------------------------------------------------------------*/
12022 if (( NULL == pEventData ) ||
12023 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12024 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12025 {
12026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 }
12031
12032 /*-----------------------------------------------------------------------
12033 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 sizeof(exitBmpsReq),
12038 &pSendBuffer, &usDataOffset, &usSendSize))||
12039 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12040 {
12041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12042 "Unable to get send buffer in Exit BMPS req %x %x %x",
12043 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 }
12047 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12048
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12050
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 wpalMemoryCopy( pSendBuffer+usDataOffset,
12052 &exitBmpsReq,
12053 sizeof(exitBmpsReq));
12054
12055 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057
12058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12062 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012063}/*WDI_ProcessExitBmpsReq*/
12064
12065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status
12076WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012077(
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 WDI_ControlBlockType* pWDICtx,
12079 WDI_EventInfoType* pEventData
12080)
12081{
12082 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12083 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 wpt_uint16 usDataOffset = 0;
12086 wpt_uint16 usSendSize = 0;
12087 tUapsdReqParams enterUapsdReq;
12088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12089
12090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 -------------------------------------------------------------------------*/
12093 if (( NULL == pEventData ) ||
12094 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12095 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12096 {
12097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 }
12102
12103 /*-----------------------------------------------------------------------
12104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 sizeof(enterUapsdReq),
12109 &pSendBuffer, &usDataOffset, &usSendSize))||
12110 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12111 {
12112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12113 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12114 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 }
12118
12119 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12120 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12121 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12122 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12123 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12124 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12125 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12126 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012128
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 wpalMemoryCopy( pSendBuffer+usDataOffset,
12130 &enterUapsdReq,
12131 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012132
12133 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012135
12136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12140 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012141}/*WDI_ProcessEnterUapsdReq*/
12142
12143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012146
12147 @param pWDICtx: pointer to the WLAN DAL context
12148 pEventData: pointer to the event information structure
12149
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 @see
12151 @return Result of the function call
12152*/
12153WDI_Status
12154WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012155(
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 WDI_ControlBlockType* pWDICtx,
12157 WDI_EventInfoType* pEventData
12158)
12159{
12160 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 wpt_uint16 usDataOffset = 0;
12163 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012164 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12165 wpt_uint8 bssIdx = 0;
12166
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12168
12169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 -------------------------------------------------------------------------*/
12172 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012173 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12175 {
12176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 }
12181
12182 /*-----------------------------------------------------------------------
12183 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012187 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012189 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 {
12191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12192 "Unable to get send buffer in Exit UAPSD req %x %x",
12193 pEventData, wdiExitUapsdRspCb);
12194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 }
12197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012198 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12199
12200 wpalMemoryCopy( pSendBuffer+usDataOffset,
12201 &bssIdx,
12202 sizeof(wpt_uint8));
12203
12204 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12205 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12206
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12211 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012212}/*WDI_ProcessExitUapsdReq*/
12213
12214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012217
12218 @param pWDICtx: pointer to the WLAN DAL context
12219 pEventData: pointer to the event information structure
12220
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 @see
12222 @return Result of the function call
12223*/
12224WDI_Status
12225WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012226(
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 WDI_ControlBlockType* pWDICtx,
12228 WDI_EventInfoType* pEventData
12229)
12230{
12231 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12232 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 wpt_uint16 usDataOffset = 0;
12235 wpt_uint16 usSendSize = 0;
12236 tUapsdInfo uapsdAcParamsReq;
12237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12238
12239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 -------------------------------------------------------------------------*/
12242 if (( NULL == pEventData ) ||
12243 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12244 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12245 {
12246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 }
12251
12252 /*-----------------------------------------------------------------------
12253 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 sizeof(uapsdAcParamsReq),
12258 &pSendBuffer, &usDataOffset, &usSendSize))||
12259 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12262 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12263 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12269 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12270 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12271 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12272 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12273 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12274
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 wpalMemoryCopy( pSendBuffer+usDataOffset,
12276 &uapsdAcParamsReq,
12277 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012278
12279 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012281
12282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12286 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012287}/*WDI_ProcessSetUapsdAcParamsReq*/
12288
12289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012292
12293 @param pWDICtx: pointer to the WLAN DAL context
12294 pEventData: pointer to the event information structure
12295
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 @see
12297 @return Result of the function call
12298*/
12299WDI_Status
12300WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012301(
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 WDI_ControlBlockType* pWDICtx,
12303 WDI_EventInfoType* pEventData
12304)
12305{
12306 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12307 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 wpt_uint16 usDataOffset = 0;
12310 wpt_uint16 usSendSize = 0;
12311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12312
12313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 -------------------------------------------------------------------------*/
12316 if (( NULL == pEventData ) ||
12317 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12318 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12319 {
12320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 }
12325
12326 /*-----------------------------------------------------------------------
12327 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12332 &pSendBuffer, &usDataOffset, &usSendSize))||
12333 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12334 {
12335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12336 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12337 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 }
12341
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 wpalMemoryCopy( pSendBuffer+usDataOffset,
12343 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12344 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348
12349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12353 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354}/*WDI_ProcessUpdateUapsdParamsReq*/
12355
12356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012359
12360 @param pWDICtx: pointer to the WLAN DAL context
12361 pEventData: pointer to the event information structure
12362
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 @see
12364 @return Result of the function call
12365*/
12366WDI_Status
12367WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012368(
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 WDI_ControlBlockType* pWDICtx,
12370 WDI_EventInfoType* pEventData
12371)
12372{
12373 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12374 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 wpt_uint16 usDataOffset = 0;
12377 wpt_uint16 usSendSize = 0;
12378 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12379
12380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12381
12382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 -------------------------------------------------------------------------*/
12385 if (( NULL == pEventData ) ||
12386 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12387 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12388 {
12389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 }
12394
12395 /*-----------------------------------------------------------------------
12396 Get message buffer
12397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 sizeof(halRxpFilterParams),
12400 &pSendBuffer, &usDataOffset, &usSendSize))||
12401 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12404 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12405 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12414
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 wpalMemoryCopy( pSendBuffer+usDataOffset,
12416 &halRxpFilterParams,
12417 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012418
12419 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012421
12422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12426 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012427}/*WDI_ProcessConfigureRxpFilterReq*/
12428
12429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012432
12433 @param pWDICtx: pointer to the WLAN DAL context
12434 pEventData: pointer to the event information structure
12435
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 @see
12437 @return Result of the function call
12438*/
12439WDI_Status
12440WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012441(
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 WDI_ControlBlockType* pWDICtx,
12443 WDI_EventInfoType* pEventData
12444)
12445{
12446 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12447 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 wpt_uint16 usDataOffset = 0;
12450 wpt_uint16 usSendSize = 0;
12451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12452
12453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 -------------------------------------------------------------------------*/
12456 if (( NULL == pEventData ) ||
12457 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12458 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12459 {
12460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 }
12465
12466 /*-----------------------------------------------------------------------
12467 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12472 &pSendBuffer, &usDataOffset, &usSendSize))||
12473 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12474 {
12475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12476 "Unable to get send buffer in Set beacon filter req %x %x %x",
12477 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 }
12481
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 wpalMemoryCopy( pSendBuffer+usDataOffset,
12483 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12484 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12485 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12486 &pwdiBeaconFilterParams->aFilters[0],
12487 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012488
12489 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491
12492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12496 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012497}/*WDI_ProcessSetBeaconFilterReq*/
12498
12499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012500 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012502
12503 @param pWDICtx: pointer to the WLAN DAL context
12504 pEventData: pointer to the event information structure
12505
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 @see
12507 @return Result of the function call
12508*/
12509WDI_Status
12510WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012511(
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 WDI_ControlBlockType* pWDICtx,
12513 WDI_EventInfoType* pEventData
12514)
12515{
12516 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12517 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 wpt_uint16 usDataOffset = 0;
12520 wpt_uint16 usSendSize = 0;
12521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12522
12523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 -------------------------------------------------------------------------*/
12526 if (( NULL == pEventData ) ||
12527 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12528 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12529 {
12530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 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
12536 /*-----------------------------------------------------------------------
12537 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12542 &pSendBuffer, &usDataOffset, &usSendSize))||
12543 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12546 "Unable to get send buffer in remove beacon filter req %x %x %x",
12547 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
12551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 wpalMemoryCopy( pSendBuffer+usDataOffset,
12553 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12554 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012555
12556 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012558
12559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12563 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012564}
12565
12566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012569
12570 @param pWDICtx: pointer to the WLAN DAL context
12571 pEventData: pointer to the event information structure
12572
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 @see
12574 @return Result of the function call
12575*/
12576WDI_Status
12577WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012578(
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 WDI_ControlBlockType* pWDICtx,
12580 WDI_EventInfoType* pEventData
12581)
12582{
12583 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12584 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 wpt_uint16 usDataOffset = 0;
12587 wpt_uint16 usSendSize = 0;
12588 tHalRSSIThresholds rssiThresholdsReq;
12589 WDI_Status ret_status = 0;
12590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12591
12592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 -------------------------------------------------------------------------*/
12595 if (( NULL == pEventData ) ||
12596 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12597 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12598 {
12599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 }
12604
12605 /*-----------------------------------------------------------------------
12606 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 sizeof(rssiThresholdsReq),
12611 &pSendBuffer, &usDataOffset, &usSendSize))||
12612 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12613 {
12614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12615 "Unable to get send buffer in remove beacon filter req %x %x %x",
12616 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 }
12620
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12641
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 wpalMemoryCopy( pSendBuffer+usDataOffset,
12643 &rssiThresholdsReq,
12644 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012645
12646 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648
12649 /*-------------------------------------------------------------------------
12650 Send Set threshold req to HAL
12651 -------------------------------------------------------------------------*/
12652 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12653 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12654 {
12655 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12656 // req. Then as a result of processing the threshold cross ind, we trigger
12657 // a Set threshold req, then we need to indicate to WDI that it needs to
12658 // go to busy state as a result of the indication as we sent a req in the
12659 // same WDI context.
12660 // Hence expected state transition is to busy.
12661 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12662 }
12663
12664 return ret_status;
12665}
12666
12667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012670
12671 @param pWDICtx: pointer to the WLAN DAL context
12672 pEventData: pointer to the event information structure
12673
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 @see
12675 @return Result of the function call
12676*/
12677WDI_Status
12678WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012679(
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 WDI_ControlBlockType* pWDICtx,
12681 WDI_EventInfoType* pEventData
12682)
12683{
12684 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12685 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 wpt_uint16 usDataOffset = 0;
12688 wpt_uint16 usSendSize = 0;
12689 tHalHostOffloadReq hostOffloadParams;
12690 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012691 wpt_uint8 ucCurrentBSSSesIdx = 0;
12692 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012693
12694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12695
12696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 -------------------------------------------------------------------------*/
12699 if (( NULL == pEventData ) ||
12700 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12701 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12702 {
12703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 }
12708
12709 /*-----------------------------------------------------------------------
12710 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12715 &pSendBuffer, &usDataOffset, &usSendSize))||
12716 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12717 {
12718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12719 "Unable to get send buffer in host offload req %x %x %x",
12720 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 }
12724
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012725 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12726 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12727 &pBSSSes);
12728 if ( NULL == pBSSSes )
12729 {
12730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012731 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012732 return WDI_STATUS_E_FAILURE;
12733 }
12734
Jeff Johnson295189b2012-06-20 16:38:30 -070012735 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
12736 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070012737
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
12739 {
12740 // ARP Offload
12741 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
12742 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
12743 4);
12744 }
12745 else
12746 {
12747 // NS Offload
12748 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
12749 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
12750 16);
12751
12752#ifdef WLAN_NS_OFFLOAD
12753 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
12754 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
12755 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
12756 16);
12757 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
12758 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
12759 16);
12760 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
12761 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
12762 16);
12763 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
12764 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
12765 16);
12766 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
12767 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
12768 6);
12769 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
12770 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
12771 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070012772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773#endif // WLAN_NS_OFFLOAD
12774 }
12775
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012776 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
12777
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 // copy hostOffloadParams into pSendBuffer
12779 wpalMemoryCopy( pSendBuffer+usDataOffset,
12780 &hostOffloadParams,
12781 sizeof(hostOffloadParams));
12782
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012783 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012785 // copy nsOffloadParams into pSendBuffer
12786 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 &nsOffloadParams,
12788 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012789 }
12790 else
12791 {
12792#ifdef WLAN_NS_OFFLOAD
12793 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
12794 {
12795 // copy nsOffloadParams into pSendBuffer
12796 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
12797 &nsOffloadParams,
12798 sizeof(nsOffloadParams));
12799 }
12800#endif
12801 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012802
12803 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012804 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012805
12806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012807 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12810 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012811}/*WDI_ProcessHostOffloadReq*/
12812
12813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012816
12817 @param pWDICtx: pointer to the WLAN DAL context
12818 pEventData: pointer to the event information structure
12819
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 @see
12821 @return Result of the function call
12822*/
12823WDI_Status
12824WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012825(
Jeff Johnson295189b2012-06-20 16:38:30 -070012826 WDI_ControlBlockType* pWDICtx,
12827 WDI_EventInfoType* pEventData
12828)
12829{
12830 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
12831 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 wpt_uint16 usDataOffset = 0;
12834 wpt_uint16 usSendSize = 0;
12835 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012836 wpt_uint8 ucCurrentBSSSesIdx = 0;
12837 WDI_BSSSessionType* pBSSSes = NULL;
12838
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12840
12841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 -------------------------------------------------------------------------*/
12844 if (( NULL == pEventData ) ||
12845 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
12846 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
12847 {
12848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12849 "Invalid parameters in Keep Alive req");
12850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 }
12853
12854 /*-----------------------------------------------------------------------
12855 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 sizeof(keepAliveReq),
12860 &pSendBuffer, &usDataOffset, &usSendSize))||
12861 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
12862 {
12863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12864 "Unable to get send buffer in keep alive req %x %x %x",
12865 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
12866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 }
12869
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012870 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12871 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
12872 &pBSSSes);
12873 if ( NULL == pBSSSes )
12874 {
12875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012876 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012877 return WDI_STATUS_E_FAILURE;
12878 }
12879
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
12881 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
12882
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012883 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012884
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
12886 {
12887 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
12888 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
12889 HAL_IPV4_ADDR_LEN);
12890 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
12891 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 wpalMemoryCopy(keepAliveReq.destMacAddr,
12894 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
12895 HAL_MAC_ADDR_LEN);
12896 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012897
12898 wpalMemoryCopy( pSendBuffer+usDataOffset,
12899 &keepAliveReq,
12900 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012901
12902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12903 "Process keep alive req %d",sizeof(keepAliveReq));
12904
12905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12906 "Process keep alive req time period %d",keepAliveReq.timePeriod);
12907
12908 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12912 "Sending keep alive req to HAL");
12913
12914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12918 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012919}/*WDI_ProcessKeepAliveReq*/
12920
12921
12922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012925
12926 @param pWDICtx: pointer to the WLAN DAL context
12927 pEventData: pointer to the event information structure
12928
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 @see
12930 @return Result of the function call
12931*/
12932WDI_Status
12933WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012934(
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 WDI_ControlBlockType* pWDICtx,
12936 WDI_EventInfoType* pEventData
12937)
12938{
12939 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
12940 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 wpt_uint16 usDataOffset = 0;
12943 wpt_uint16 usSendSize = 0;
12944 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012945 wpt_uint8 ucCurrentBSSSesIdx = 0;
12946 WDI_BSSSessionType* pBSSSes = NULL;
12947
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12949
12950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 -------------------------------------------------------------------------*/
12953 if (( NULL == pEventData ) ||
12954 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
12955 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
12956 {
12957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 }
12962
12963 /*-----------------------------------------------------------------------
12964 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 sizeof(wowlAddBcPtrnReq),
12969 &pSendBuffer, &usDataOffset, &usSendSize))||
12970 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
12971 {
12972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12973 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
12974 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
12975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 }
12978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012979 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12980 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
12981 &pBSSSes);
12982 if ( NULL == pBSSSes )
12983 {
12984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012985 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012986 return WDI_STATUS_E_FAILURE;
12987 }
12988
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
12997
12998 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
12999 {
13000 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13001 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13002 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13003 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13004 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13005 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13006 }
13007 else
13008 {
13009 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13010 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13011 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13012 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13013 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13014 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13015
13016 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13017 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13018 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13019 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13020 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13021 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13022 }
13023
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013024 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13025
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 wpalMemoryCopy( pSendBuffer+usDataOffset,
13027 &wowlAddBcPtrnReq,
13028 sizeof(wowlAddBcPtrnReq));
13029
13030 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013032
13033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13037 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013038}/*WDI_ProcessWowlAddBcPtrnReq*/
13039
13040/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013043
13044 @param pWDICtx: pointer to the WLAN DAL context
13045 pEventData: pointer to the event information structure
13046
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 @see
13048 @return Result of the function call
13049*/
13050WDI_Status
13051WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013052(
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 WDI_ControlBlockType* pWDICtx,
13054 WDI_EventInfoType* pEventData
13055)
13056{
13057 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13058 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 wpt_uint16 usDataOffset = 0;
13061 wpt_uint16 usSendSize = 0;
13062 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013063 wpt_uint8 ucCurrentBSSSesIdx = 0;
13064 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13066
13067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 -------------------------------------------------------------------------*/
13070 if (( NULL == pEventData ) ||
13071 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13072 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13073 {
13074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 }
13079
13080 /*-----------------------------------------------------------------------
13081 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 sizeof(wowlDelBcPtrnReq),
13086 &pSendBuffer, &usDataOffset, &usSendSize))||
13087 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13088 {
13089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13090 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13091 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 }
13095
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013096 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13097 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13098 &pBSSSes);
13099 if ( NULL == pBSSSes )
13100 {
13101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013102 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013103 return WDI_STATUS_E_FAILURE;
13104 }
13105
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013108
13109 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13110
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 wpalMemoryCopy( pSendBuffer+usDataOffset,
13112 &wowlDelBcPtrnReq,
13113 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013114
13115 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117
13118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13122 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013123}/*WDI_ProcessWowlDelBcPtrnReq*/
13124
13125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013128
13129 @param pWDICtx: pointer to the WLAN DAL context
13130 pEventData: pointer to the event information structure
13131
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 @see
13133 @return Result of the function call
13134*/
13135WDI_Status
13136WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013137(
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ControlBlockType* pWDICtx,
13139 WDI_EventInfoType* pEventData
13140)
13141{
13142 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13143 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 wpt_uint16 usDataOffset = 0;
13146 wpt_uint16 usSendSize = 0;
13147 tHalWowlEnterParams wowlEnterReq;
13148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13149
13150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 -------------------------------------------------------------------------*/
13153 if (( NULL == pEventData ) ||
13154 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13155 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13156 {
13157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 }
13162
13163 /*-----------------------------------------------------------------------
13164 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 sizeof(wowlEnterReq),
13169 &pSendBuffer, &usDataOffset, &usSendSize))||
13170 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13171 {
13172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13173 "Unable to get send buffer in Wowl enter req %x %x %x",
13174 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 }
13178
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13195
13196#ifdef WLAN_WAKEUP_EVENTS
13197 wowlEnterReq.ucWoWEAPIDRequestEnable =
13198 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13199
13200 wowlEnterReq.ucWoWEAPOL4WayEnable =
13201 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13202
13203 wowlEnterReq.ucWowNetScanOffloadMatch =
13204 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13205
13206 wowlEnterReq.ucWowGTKRekeyError =
13207 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13208
13209 wowlEnterReq.ucWoWBSSConnLoss =
13210 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13211#endif // WLAN_WAKEUP_EVENTS
13212
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013213 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13214
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13216 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13217 sizeof(tSirMacAddr));
13218
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 wpalMemoryCopy( pSendBuffer+usDataOffset,
13220 &wowlEnterReq,
13221 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013222
13223 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013225
13226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13230 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013231}/*WDI_ProcessWowlEnterReq*/
13232
13233/**
13234 @brief Process Wowl exit Request function (called when Main FSM
13235 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013236
13237 @param pWDICtx: pointer to the WLAN DAL context
13238 pEventData: pointer to the event information structure
13239
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 @see
13241 @return Result of the function call
13242*/
13243WDI_Status
13244WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013245(
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 WDI_ControlBlockType* pWDICtx,
13247 WDI_EventInfoType* pEventData
13248)
13249{
13250 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013251 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 wpt_uint16 usDataOffset = 0;
13254 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013255 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13257
13258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 -------------------------------------------------------------------------*/
13261 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013262 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13264 {
13265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 }
13270
13271 /*-----------------------------------------------------------------------
13272 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013276 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013278 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 {
13280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13281 "Unable to get send buffer in Wowl Exit req %x %x",
13282 pEventData, wdiWowlExitCb);
13283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 }
13286
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013287 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13288
13289 wpalMemoryCopy( pSendBuffer+usDataOffset,
13290 &wowlExitparams,
13291 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13296 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013297}/*WDI_ProcessWowlExitReq*/
13298
13299/**
13300 @brief Process Configure Apps Cpu Wakeup State Request function
13301 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013302
13303 @param pWDICtx: pointer to the WLAN DAL context
13304 pEventData: pointer to the event information structure
13305
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 @see
13307 @return Result of the function call
13308*/
13309WDI_Status
13310WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013311(
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 WDI_ControlBlockType* pWDICtx,
13313 WDI_EventInfoType* pEventData
13314)
13315{
13316 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13317 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 wpt_uint16 usDataOffset = 0;
13320 wpt_uint16 usSendSize = 0;
13321 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13323
13324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 -------------------------------------------------------------------------*/
13327 if (( NULL == pEventData ) ||
13328 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13329 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13330 {
13331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013332 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 }
13336
13337 /*-----------------------------------------------------------------------
13338 Get message buffer
13339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 sizeof(halCfgAppsCpuWakeupStateReqParams),
13342 &pSendBuffer, &usDataOffset, &usSendSize))||
13343 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13344 {
13345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13346 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13347 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 }
13351
Jeff Johnsone7245742012-09-05 17:12:55 -070013352 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13354
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 wpalMemoryCopy( pSendBuffer+usDataOffset,
13356 &halCfgAppsCpuWakeupStateReqParams,
13357 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013358
13359 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013361
13362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13366 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13367 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013368}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13369
13370#ifdef WLAN_FEATURE_VOWIFI_11R
13371/**
13372 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13373 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013374
13375 @param pWDICtx: pointer to the WLAN DAL context
13376 pEventData: pointer to the event information structure
13377
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 @see
13379 @return Result of the function call
13380*/
13381WDI_Status
13382WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013383(
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 WDI_ControlBlockType* pWDICtx,
13385 WDI_EventInfoType* pEventData
13386)
13387{
13388 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13389 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 wpt_uint16 usDataOffset = 0;
13394 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 wpt_macAddr macBSSID;
13397 tAggrAddTsReq halAggrAddTsReq;
13398 int i;
13399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13400
13401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 -------------------------------------------------------------------------*/
13404 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13405 ( NULL == pEventData->pCBfnc ))
13406 {
13407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 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 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13413 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13414 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13415 /*-------------------------------------------------------------------------
13416 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 -------------------------------------------------------------------------*/
13419 wpalMutexAcquire(&pWDICtx->wptMutex);
13420
13421 /*------------------------------------------------------------------------
13422 Find the BSS for which the request is made and identify WDI session
13423 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13425 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 &macBSSID))
13427 {
13428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13429 "This station does not exist in the WDI Station Table %d");
13430 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 }
13433
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13435 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13438 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13439 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013440
13441 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013444
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 /*------------------------------------------------------------------------
13446 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 ------------------------------------------------------------------------*/
13449 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13452 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13453 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013454
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 }
13459
13460 wpalMutexRelease(&pWDICtx->wptMutex);
13461 /*-----------------------------------------------------------------------
13462 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 sizeof(tAggrAddTsParams),
13467 &pSendBuffer, &usDataOffset, &usSendSize))||
13468 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13469 {
13470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13471 "Unable to get send buffer in set bss key req %x %x %x",
13472 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 }
13476
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13481
13482 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13483 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13490 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013492 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13493 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13496 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13499 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13502 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13505 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13508 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13511 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013514 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516
13517
13518 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13548 }
13549
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 wpalMemoryCopy( pSendBuffer+usDataOffset,
13551 &halAggrAddTsReq,
13552 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013553
13554 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013556
13557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013562 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013563}/*WDI_ProcessAggrAddTSpecReq*/
13564#endif /* WLAN_FEATURE_VOWIFI_11R */
13565
13566/**
13567 @brief Process Shutdown Request function (called when Main FSM
13568 allows it)
13569
13570 @param pWDICtx: pointer to the WLAN DAL context
13571 pEventData: pointer to the event information structure
13572
13573 @see
13574 @return Result of the function call
13575*/
13576WDI_Status
13577WDI_ProcessShutdownReq
13578(
13579 WDI_ControlBlockType* pWDICtx,
13580 WDI_EventInfoType* pEventData
13581 )
13582{
13583 wpt_status wptStatus;
13584
13585
13586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13587
13588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 -------------------------------------------------------------------------*/
13591 if ( NULL == pEventData )
13592 {
13593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 WDI_ASSERT(0);
13596 return WDI_STATUS_E_FAILURE;
13597 }
13598
13599 wpalMutexAcquire(&pWDICtx->wptMutex);
13600
13601
13602 gWDIInitialized = eWLAN_PAL_FALSE;
13603 /*! TO DO: stop the data services */
13604 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13605 {
13606 /*Stop the STA Table !UT- check this logic again
13607 It is safer to do it here than on the response - because a stop is imminent*/
13608 WDI_STATableStop(pWDICtx);
13609
13610 /* Stop Transport Driver, DXE */
13611 WDTS_Stop(pWDICtx);
13612 }
13613
13614 /*Clear all pending request*/
13615 WDI_ClearPendingRequests(pWDICtx);
13616 /* Close Data transport*/
13617 /* FTM mode does not open Data Path */
13618 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13619 {
13620 WDTS_Close(pWDICtx);
13621 }
13622 /*Close the STA Table !UT- check this logic again*/
13623 WDI_STATableClose(pWDICtx);
13624 /*close the PAL */
13625 wptStatus = wpalClose(pWDICtx->pPALContext);
13626 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13627 {
13628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13629 "Failed to wpal Close %d", wptStatus);
13630 WDI_ASSERT(0);
13631 }
13632
13633 /*Transition back to init state*/
13634 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13635
13636 wpalMutexRelease(&pWDICtx->wptMutex);
13637
13638 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013640
13641
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013643}/*WDI_ProcessShutdownReq*/
13644
13645/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013647========================================================================*/
13648
13649/**
13650 @brief Process Start Response function (called when a response
13651 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013652
13653 @param pWDICtx: pointer to the WLAN DAL context
13654 pEventData: pointer to the event information structure
13655
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 @see
13657 @return Result of the function call
13658*/
13659WDI_Status
13660WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013661(
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 WDI_ControlBlockType* pWDICtx,
13663 WDI_EventInfoType* pEventData
13664)
13665{
13666 WDI_StartRspParamsType wdiRspParams;
13667 WDI_StartRspCb wdiStartRspCb = NULL;
13668
13669 tHalMacStartRspParams* startRspParams;
13670
13671#ifndef HAL_SELF_STA_PER_BSS
13672 WDI_AddStaParams wdiAddSTAParam = {0};
13673#endif
13674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13675
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 -------------------------------------------------------------------------*/
13680 if (( NULL == pEventData ) ||
13681 ( NULL == pEventData->pEventData) ||
13682 ( NULL == wdiStartRspCb ))
13683 {
13684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 }
13689
13690 /*-------------------------------------------------------------------------
13691 Extract response and send it to UMAC
13692 -------------------------------------------------------------------------*/
13693 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13694 {
13695 // not enough data was received
13696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13697 "Invalid response length in Start Resp Expect %x Rcvd %x",
13698 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
13699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 }
13702
13703 /*-------------------------------------------------------------------------
13704 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 -------------------------------------------------------------------------*/
13707 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
13708
13709 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
13710 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
13711 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
13712 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
13713 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
13714 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
13715 wdiRspParams.wlanReportedVersion.major =
13716 startRspParams->wcnssWlanVersion.major;
13717 wdiRspParams.wlanReportedVersion.minor =
13718 startRspParams->wcnssWlanVersion.minor;
13719 wdiRspParams.wlanReportedVersion.version =
13720 startRspParams->wcnssWlanVersion.version;
13721 wdiRspParams.wlanReportedVersion.revision =
13722 startRspParams->wcnssWlanVersion.revision;
13723 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
13724 startRspParams->wcnssCrmVersionString,
13725 sizeof(wdiRspParams.wcnssSoftwareVersion));
13726 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
13727 startRspParams->wcnssWlanVersionString,
13728 sizeof(wdiRspParams.wcnssHardwareVersion));
13729 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
13730
Pratik Bhalgatd4404592012-11-22 17:49:14 +053013731 /*Save the HAL Version*/
13732 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
13733
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 wpalMutexAcquire(&pWDICtx->wptMutex);
13735 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
13736 {
13737 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
13738
13739 /*Cache the start response for further use*/
13740 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 sizeof(pWDICtx->wdiCachedStartRspParams));
13743
13744 }
13745 else
13746 {
13747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13748 "Failed to start device with status %s(%d)",
13749 WDI_getHALStatusMsgString(startRspParams->status),
13750 startRspParams->status);
13751
13752 /*Set the expected state transition to stopped - because the start has
13753 failed*/
13754 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13755
13756 wpalMutexRelease(&pWDICtx->wptMutex);
13757
13758 /*Notify UMAC*/
13759 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070013760
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
13762
13763 /*Although the response is an error - it was processed by our function
13764 so as far as the caller is concerned this is a succesful reponse processing*/
13765 return WDI_STATUS_SUCCESS;
13766 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013767
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 wpalMutexRelease(&pWDICtx->wptMutex);
13769
13770 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
13771 {
13772 /* FTM mode does not need to execute below */
13773 /* Notify UMAC */
13774 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13775 return WDI_STATUS_SUCCESS;
13776 }
13777
13778 /* START the Data transport */
13779 WDTS_startTransport(pWDICtx);
13780
13781 /*Start the STA Table !- check this logic again*/
13782 WDI_STATableStart(pWDICtx);
13783
13784#ifndef HAL_SELF_STA_PER_BSS
13785 /* Store the Self STA Index */
13786 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
13787
13788 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
13789 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
13790 WDI_MAC_ADDR_LEN);
13791
13792 /* At this point add the self-STA */
13793
13794 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
13795 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
13796 /*! TO DO: wdiAddSTAParam.dpuSig */
13797 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
13798 /*! TO DO: wdiAddSTAParam.ucHTCapable */
13799 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
13800
13801 //all DPU indices are the same for self STA
13802 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
13803 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070013804 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
13806 WDI_MAC_ADDR_LEN);
13807 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
13808 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
13809
13810 /* Note: Since we don't get an explicit config STA request for self STA, we
13811 add the self STA upon receiving the Start response message. But the
13812 self STA entry in the table is deleted when WDI gets an explicit delete STA
13813 request */
13814 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
13815#endif
13816
13817 /*Notify UMAC*/
13818 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
13819
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013821}/*WDI_ProcessStartRsp*/
13822
13823
13824/**
13825 @brief Process Stop Response function (called when a response
13826 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013827
13828 @param pWDICtx: pointer to the WLAN DAL context
13829 pEventData: pointer to the event information structure
13830
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 @see
13832 @return Result of the function call
13833*/
13834WDI_Status
13835WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013836(
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 WDI_ControlBlockType* pWDICtx,
13838 WDI_EventInfoType* pEventData
13839)
13840{
13841 WDI_Status wdiStatus;
13842 WDI_StopRspCb wdiStopRspCb = NULL;
13843
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13846
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 -------------------------------------------------------------------------*/
13851 if (( NULL == pEventData ) ||
13852 ( NULL == pEventData->pEventData) ||
13853 ( NULL == wdiStopRspCb ))
13854 {
13855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 }
13860
13861 /*-------------------------------------------------------------------------
13862 Extract response and send it to UMAC
13863 -------------------------------------------------------------------------*/
13864 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
13865 {
13866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13867 "Invalid response length in Stop Resp %x %x",
13868 pEventData->uEventDataSize);
13869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 }
13872
13873 /*-------------------------------------------------------------------------
13874 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013877 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
13878 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 sizeof(halMacStopRspMsg.stopRspParams));
13880
Jeff Johnsone7245742012-09-05 17:12:55 -070013881 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013882
13883 wpalMutexAcquire(&pWDICtx->wptMutex);
13884
13885 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013886 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 --------------------------------------------------------------------------*/
13888 if ( WDI_STATUS_SUCCESS != wdiStatus )
13889 {
13890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13891 "Failed to stop the device with status %s (%d)",
13892 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
13893 halMacStopRspMsg.stopRspParams.status);
13894
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
13896
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013900
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
13902
13903 /*Transition now as WDI may get preempted imediately after it sends
13904 up the Stop Response and it will not get to process the state transition
13905 from Main Rsp function*/
13906 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
13907 wpalMutexRelease(&pWDICtx->wptMutex);
13908
13909 /*! TO DO: - STOP the Data transport */
13910
13911 /*Notify UMAC*/
13912 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
13913
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013915}/*WDI_ProcessStopRsp*/
13916
13917/**
13918 @brief Process Close Rsp function (called when a response
13919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013920
13921 @param pWDICtx: pointer to the WLAN DAL context
13922 pEventData: pointer to the event information structure
13923
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 @see
13925 @return Result of the function call
13926*/
13927WDI_Status
13928WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013929(
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 WDI_ControlBlockType* pWDICtx,
13931 WDI_EventInfoType* pEventData
13932)
13933{
13934 /*There is no close response comming from HAL - function just kept for
13935 simmetry */
13936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013938}/*WDI_ProcessCloseRsp*/
13939
13940
13941/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070013943============================================================================*/
13944
13945/**
13946 @brief Process Init Scan Rsp function (called when a response
13947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013948
13949 @param pWDICtx: pointer to the WLAN DAL context
13950 pEventData: pointer to the event information structure
13951
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 @see
13953 @return Result of the function call
13954*/
13955WDI_Status
13956WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013957(
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 WDI_ControlBlockType* pWDICtx,
13959 WDI_EventInfoType* pEventData
13960)
13961{
13962 WDI_Status wdiStatus;
13963 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013965 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13967
13968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 -------------------------------------------------------------------------*/
13971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
13972 ( NULL == pEventData->pEventData))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 }
13979
13980 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
13981 if( NULL == wdiInitScanRspCb)
13982 {
13983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013984 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 }
13988
13989 /*-------------------------------------------------------------------------
13990 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
13994 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 sizeof(halInitScanRspMsg.initScanRspParams));
13996
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070013998
13999 if ( pWDICtx->bInBmps )
14000 {
14001 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014002 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14003 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14005 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14006 WDI_ASSERT(0);
14007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009
14010 /*Notify UMAC*/
14011 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14012
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014014}/*WDI_ProcessInitScanRsp*/
14015
14016
14017/**
14018 @brief Process Start Scan Rsp function (called when a response
14019 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014020
14021 @param pWDICtx: pointer to the WLAN DAL context
14022 pEventData: pointer to the event information structure
14023
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 @see
14025 @return Result of the function call
14026*/
14027WDI_Status
14028WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014029(
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 WDI_ControlBlockType* pWDICtx,
14031 WDI_EventInfoType* pEventData
14032)
14033{
14034 WDI_StartScanRspParamsType wdiStartScanParams;
14035 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014036
14037 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14039
14040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 -------------------------------------------------------------------------*/
14043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14044 ( NULL == pEventData->pEventData))
14045 {
14046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 }
14051
14052 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14053 if( NULL == wdiStartScanRspCb)
14054 {
14055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014056 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 }
14060
14061 /*-------------------------------------------------------------------------
14062 Extract response and send it to UMAC
14063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14065 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 sizeof(halStartScanRspMsg.startScanRspParams));
14067
14068 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14069 halStartScanRspMsg.startScanRspParams.status);
14070#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 halStartScanRspMsg.startScanRspParams.startTSF,
14075 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014077
14078 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14079 {
14080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14081 "Start scan failed with status %s (%d)",
14082 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14083 halStartScanRspMsg.startScanRspParams.status);
14084 /* send the status to UMAC, don't return from here*/
14085 }
14086
14087 /*Notify UMAC*/
14088 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14089
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091
14092}/*WDI_ProcessStartScanRsp*/
14093
14094
14095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014098
14099 @param pWDICtx: pointer to the WLAN DAL context
14100 pEventData: pointer to the event information structure
14101
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 @see
14103 @return Result of the function call
14104*/
14105WDI_Status
14106WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014107(
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 WDI_ControlBlockType* pWDICtx,
14109 WDI_EventInfoType* pEventData
14110)
14111{
14112 WDI_Status wdiStatus;
14113 tHalEndScanRspMsg halEndScanRspMsg;
14114 WDI_EndScanRspCb wdiEndScanRspCb;
14115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14116
14117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 -------------------------------------------------------------------------*/
14120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14121 ( NULL == pEventData->pEventData))
14122 {
14123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 }
14128
14129 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14130
14131 /*-------------------------------------------------------------------------
14132 Extract response and send it to UMAC
14133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14135 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 sizeof(halEndScanRspMsg.endScanRspParams));
14137
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014139
14140 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14141 {
14142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14143 "End Scan failed with status %s (%d )",
14144 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14145 halEndScanRspMsg.endScanRspParams.status);
14146 /* send the status to UMAC, don't return from here*/
14147 }
14148
14149 /*Notify UMAC*/
14150 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14151
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014153}/*WDI_ProcessEndScanRsp*/
14154
14155
14156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014159
14160 @param pWDICtx: pointer to the WLAN DAL context
14161 pEventData: pointer to the event information structure
14162
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 @see
14164 @return Result of the function call
14165*/
14166WDI_Status
14167WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014168(
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 WDI_ControlBlockType* pWDICtx,
14170 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014171)
Jeff Johnson295189b2012-06-20 16:38:30 -070014172{
14173 WDI_Status wdiStatus;
14174 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014175
14176 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14178
14179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 -------------------------------------------------------------------------*/
14182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14183 ( NULL == pEventData->pEventData))
14184 {
14185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 }
14190
14191 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14192
14193 /*-------------------------------------------------------------------------
14194 Extract response and send it to UMAC
14195 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014196 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14197 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14199
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014201
14202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 halFinishScanRspMsg.finishScanRspParams.status);
14205
14206 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14207 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14208 {
14209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14210 "Finish Scan failed with status %s (%d)",
14211 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14212 halFinishScanRspMsg.finishScanRspParams.status);
14213 /* send the status to UMAC, don't return from here*/
14214 }
14215
14216 /*Notify UMAC*/
14217 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14218
Jeff Johnsone7245742012-09-05 17:12:55 -070014219 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014220}/*WDI_ProcessFinishScanRsp*/
14221
14222/**
14223 @brief Process Join Response function (called when a response
14224 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014225
14226 @param pWDICtx: pointer to the WLAN DAL context
14227 pEventData: pointer to the event information structure
14228
Jeff Johnson295189b2012-06-20 16:38:30 -070014229 @see
14230 @return Result of the function call
14231*/
14232WDI_Status
14233WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014234(
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 WDI_ControlBlockType* pWDICtx,
14236 WDI_EventInfoType* pEventData
14237)
14238{
14239 WDI_Status wdiStatus;
14240 WDI_JoinRspCb wdiJoinRspCb;
14241 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014242
14243 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14245
14246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 -------------------------------------------------------------------------*/
14249 if (( NULL == pWDICtx ) ||
14250 ( NULL == pWDICtx->pfncRspCB ) ||
14251 ( NULL == pEventData ) ||
14252 ( NULL == pEventData->pEventData))
14253 {
14254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 }
14259
14260 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14261
14262 /*-------------------------------------------------------------------------
14263 Extract response and send it to UMAC
14264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14266 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 sizeof(halJoinRspMsg.joinRspParams));
14268
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014270
14271 wpalMutexAcquire(&pWDICtx->wptMutex);
14272
14273 /*-----------------------------------------------------------------------
14274 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14279 {
14280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14282 "association no longer in progress %d - mysterious HAL response",
14283 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014284
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 }
14289
14290 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14291
14292 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 -----------------------------------------------------------------------*/
14295 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14296 {
14297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14298 "Join only allowed in Joining state - failure state is %d "
14299 "strange HAL response", pBSSSes->wdiAssocState);
14300
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14302
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 }
14306
14307
14308 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 -----------------------------------------------------------------------*/
14311 if ( WDI_STATUS_SUCCESS != wdiStatus )
14312 {
14313 /*Association was failed by HAL - remove session*/
14314 WDI_DeleteSession(pWDICtx, pBSSSes);
14315
14316 /*Association no longer in progress */
14317 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14318
14319 /*Association no longer in progress - prepare pending assoc for processing*/
14320 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014321
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323 else
14324 {
14325 /*Transition to state Joining - this may be redundant as we are supposed
14326 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 }
14329
14330 wpalMutexRelease(&pWDICtx->wptMutex);
14331
14332 /*Notify UMAC*/
14333 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14334
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014336}/*WDI_ProcessJoinRsp*/
14337
14338
14339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014342
14343 @param pWDICtx: pointer to the WLAN DAL context
14344 pEventData: pointer to the event information structure
14345
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 @see
14347 @return Result of the function call
14348*/
14349WDI_Status
14350WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014351(
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 WDI_ControlBlockType* pWDICtx,
14353 WDI_EventInfoType* pEventData
14354)
14355{
14356 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14357 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 WDI_BSSSessionType* pBSSSes = NULL;
14360
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14363 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014364
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14366
14367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 -------------------------------------------------------------------------*/
14370 if (( NULL == pEventData ) ||
14371 ( NULL == pEventData->pEventData))
14372 {
14373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 }
14378
14379 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14380
14381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14385 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 sizeof(halConfigBssRspMsg.configBssRspParams));
14387
14388 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14389 halConfigBssRspMsg.configBssRspParams.status);
14390 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14391 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14394 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014395
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014397
14398 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014400
14401 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14409 #endif
14410 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14411 halConfigBssRspMsg.configBssRspParams.staMac,
14412 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014413
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 wpalMutexAcquire(&pWDICtx->wptMutex);
14415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14419 wdiConfigBSSParams.macBSSID,
14420 &pBSSSes);
14421
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 /*-----------------------------------------------------------------------
14423 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 -----------------------------------------------------------------------*/
14426 if ( NULL == pBSSSes )
14427 {
14428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14429 "Association sequence for this BSS does not yet exist "
14430 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014431
14432 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14433
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014437
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 /*Save data for this BSS*/
14439 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14440 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014443 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14451 pBSSSes->bcastStaIdx =
14452 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014453
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014455
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 /*-------------------------------------------------------------------------
14457 Add Peer STA
14458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14461 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014462
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 wdiAddSTAParam.ucHTCapable =
14467 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14468 wdiAddSTAParam.ucStaType =
14469 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14470
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14473 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014475
14476 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14477 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14478 WDI_MAC_ADDR_LEN);
14479
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014493
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14495 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014496
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14498 /*-------------------------------------------------------------------------
14499 Add Broadcast STA only in AP mode
14500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 WDI_BSS_OPERATIONAL_MODE_AP )
14503 {
14504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14505 "Add BCAST STA to table for index: %d",
14506 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014507
14508 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014510
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14512 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14513 }
14514 wpalMutexRelease(&pWDICtx->wptMutex);
14515 }
14516 else
14517 {
14518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14519 "Config BSS RSP failed with status : %s(%d)",
14520 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 halConfigBssRspMsg.configBssRspParams.status);
14523
Jeff Johnsone7245742012-09-05 17:12:55 -070014524
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 /*Association was failed by HAL - remove session*/
14526 WDI_DeleteSession(pWDICtx, pBSSSes);
14527
14528 /*Association no longer in progress */
14529 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14530
14531 /*Association no longer in progress - prepare pending assoc for processing*/
14532 WDI_DequeueAssocRequest(pWDICtx);
14533
14534 }
14535
14536 /*Notify UMAC*/
14537 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14538
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014540}/*WDI_ProcessConfigBSSRsp*/
14541
14542
14543/**
14544 @brief Process Del BSS Response function (called when a response
14545 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014546
14547 @param pWDICtx: pointer to the WLAN DAL context
14548 pEventData: pointer to the event information structure
14549
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 @see
14551 @return Result of the function call
14552*/
14553WDI_Status
14554WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014555(
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 WDI_ControlBlockType* pWDICtx,
14557 WDI_EventInfoType* pEventData
14558)
14559{
14560 WDI_DelBSSRspParamsType wdiDelBSSParams;
14561 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 WDI_BSSSessionType* pBSSSes = NULL;
14564
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14567
14568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 -------------------------------------------------------------------------*/
14571 if (( NULL == pEventData ) ||
14572 ( NULL == pEventData->pEventData))
14573 {
14574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 }
14579
14580 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14581
14582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14586 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 sizeof(halDelBssRspMsg.deleteBssRspParams));
14588
14589
14590 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014592
14593 wpalMutexAcquire(&pWDICtx->wptMutex);
14594
14595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14599 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14600 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014601
14602 /*-----------------------------------------------------------------------
14603 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 -----------------------------------------------------------------------*/
14606 if ( NULL == pBSSSes )
14607 {
14608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14609 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014610 "association no longer in progress - mysterious HAL response");
14611
14612 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14613
14614 wpalMutexRelease(&pWDICtx->wptMutex);
14615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014617
14618 /*Extract BSSID for the response to UMAC*/
14619 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14620 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14621
14622 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14623
14624 /*-----------------------------------------------------------------------
14625 The current session will be deleted
14626 -----------------------------------------------------------------------*/
14627 WDI_DeleteSession(pWDICtx, pBSSSes);
14628
14629
14630 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14631 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014633 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014634 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014635
14636 /* Delete the STA's in this BSS */
14637 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14638
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 wpalMutexRelease(&pWDICtx->wptMutex);
14640
14641 /*Notify UMAC*/
14642 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14643
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014645}/*WDI_ProcessDelBSSRsp*/
14646
14647/**
14648 @brief Process Post Assoc Rsp function (called when a response
14649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014650
14651 @param pWDICtx: pointer to the WLAN DAL context
14652 pEventData: pointer to the event information structure
14653
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 @see
14655 @return Result of the function call
14656*/
14657WDI_Status
14658WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014659(
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 WDI_ControlBlockType* pWDICtx,
14661 WDI_EventInfoType* pEventData
14662)
14663{
14664 WDI_PostAssocRspParamsType wdiPostAssocParams;
14665 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14670
14671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 -------------------------------------------------------------------------*/
14674 if (( NULL == pEventData ) ||
14675 ( NULL == pEventData->pEventData))
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 }
14682
14683 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14684
14685 /*-------------------------------------------------------------------------
14686 Extract response and send it to UMAC
14687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 sizeof(halPostAssocRspMsg.postAssocRspParams));
14691
14692 /*Extract the Post Assoc STA Params */
14693
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14700
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 wdiPostAssocParams.wdiStatus =
14702 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014703
14704 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14705 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
14707 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 WDI_MAC_ADDR_LEN);
14709
14710 /* Extract Post Assoc BSS Params */
14711
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
14713 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
14714 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014715
14716 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
14717 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
14720 .macSTA, WDI_MAC_ADDR_LEN);
14721
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
14724
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
14727
14728 wdiPostAssocParams.bssParams.ucBSSIdx =
14729 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14730
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
14733
14734 wpalMutexAcquire(&pWDICtx->wptMutex);
14735
14736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014742
14743 /*-----------------------------------------------------------------------
14744 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 -----------------------------------------------------------------------*/
14747 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14750 {
14751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14752 "Association sequence for this BSS does not yet exist or "
14753 "association no longer in progress - mysterious HAL response");
14754
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14756
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 }
14760
14761 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -----------------------------------------------------------------------*/
14764 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14765 {
14766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14767 "Post Assoc not allowed before JOIN - failing request "
14768 "strange HAL response");
14769
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14771
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 }
14775
14776 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 -----------------------------------------------------------------------*/
14779 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
14780 {
14781 /*Association was failed by HAL - remove session*/
14782 WDI_DeleteSession(pWDICtx, pBSSSes);
14783 }
14784 else
14785 {
14786 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014787 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014788
14789 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
14798
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
14801 }
14802
14803 /*Association no longer in progress */
14804 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14805
14806 /*Association no longer in progress - prepare pending assoc for processing*/
14807 WDI_DequeueAssocRequest(pWDICtx);
14808
14809 wpalMutexRelease(&pWDICtx->wptMutex);
14810
14811 /*Notify UMAC*/
14812 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
14813
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014815}/*WDI_ProcessPostAssocRsp*/
14816
14817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014820
14821 @param pWDICtx: pointer to the WLAN DAL context
14822 pEventData: pointer to the event information structure
14823
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 @see
14825 @return Result of the function call
14826*/
14827WDI_Status
14828WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014829(
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 WDI_ControlBlockType* pWDICtx,
14831 WDI_EventInfoType* pEventData
14832)
14833{
14834 WDI_DelSTARspParamsType wdiDelSTARsp;
14835 WDI_DelSTARspCb wdiDelSTARspCb;
14836 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14839
14840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 -------------------------------------------------------------------------*/
14843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14844 ( NULL == pEventData->pEventData))
14845 {
14846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 }
14851
14852 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
14853
14854 /*-------------------------------------------------------------------------
14855 Extract response and send it to UMAC
14856 -------------------------------------------------------------------------*/
14857 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 sizeof(halDelStaRspMsg.delStaRspParams));
14860
14861 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 wdiDelSTARsp.wdiStatus =
14863 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014864
14865 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
14866
14867 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
14868 if(staType == WDI_STA_ENTRY_SELF)
14869 {
14870 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
14871
14872 /* At this point add the self-STA */
14873
14874 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14875 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14876 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14877
14878#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
14879#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
14880
14881 //all DPU indices are the same for self STA
14882 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14883 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14884 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
14885 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14886 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
14887 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070014888
14889 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 }
14891 else
14892 {
14893 //Delete the station in the table
14894 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
14895 }
14896
14897 /*Notify UMAC*/
14898 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
14899
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014901}/*WDI_ProcessDelSTARsp*/
14902
14903
14904/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070014906==========================================================================*/
14907
14908/**
14909 @brief Process Set BSS Key Rsp function (called when a response
14910 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014911
14912 @param pWDICtx: pointer to the WLAN DAL context
14913 pEventData: pointer to the event information structure
14914
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 @see
14916 @return Result of the function call
14917*/
14918WDI_Status
14919WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014920(
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 WDI_ControlBlockType* pWDICtx,
14922 WDI_EventInfoType* pEventData
14923)
14924{
14925 WDI_Status wdiStatus;
14926 eHalStatus halStatus;
14927 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
14928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14929
14930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 -------------------------------------------------------------------------*/
14933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14934 ( NULL == pEventData->pEventData))
14935 {
14936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 }
14941
14942 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
14943
14944 /*-------------------------------------------------------------------------
14945 Extract response and send it to UMAC
14946 -------------------------------------------------------------------------*/
14947 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014948 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070014949
14950 if ( eHAL_STATUS_SUCCESS != halStatus )
14951 {
14952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14953 "Set BSS Key failed with status %s (%d)",
14954 WDI_getHALStatusMsgString(halStatus),
14955 halStatus);
14956 /* send the status to UMAC, don't return from here*/
14957 }
14958
14959 /*Notify UMAC*/
14960 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14961
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014963}/*WDI_ProcessSetBssKeyRsp*/
14964
14965/**
14966 @brief Process Remove BSS Key Rsp function (called when a response
14967 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014968
14969 @param pWDICtx: pointer to the WLAN DAL context
14970 pEventData: pointer to the event information structure
14971
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 @see
14973 @return Result of the function call
14974*/
14975WDI_Status
14976WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014977(
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 WDI_ControlBlockType* pWDICtx,
14979 WDI_EventInfoType* pEventData
14980)
14981{
14982 WDI_Status wdiStatus;
14983 eHalStatus halStatus;
14984 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
14985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14986
14987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 -------------------------------------------------------------------------*/
14990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14991 ( NULL == pEventData->pEventData))
14992 {
14993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 }
14998
14999 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15000
15001 /*-------------------------------------------------------------------------
15002 Extract response and send it to UMAC
15003 -------------------------------------------------------------------------*/
15004 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015005 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015006
15007 if ( eHAL_STATUS_SUCCESS != halStatus )
15008 {
15009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15010 "Remove BSS Key failed with status %s (%d )",
15011 WDI_getHALStatusMsgString(halStatus),
15012 halStatus);
15013 /* send the status to UMAC, don't return from here*/
15014 }
15015
15016 /*Notify UMAC*/
15017 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15018
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015020}/*WDI_ProcessSetBssKeyRsp*/
15021
15022
15023/**
15024 @brief Process Set STA Key Rsp function (called when a response
15025 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015026
15027 @param pWDICtx: pointer to the WLAN DAL context
15028 pEventData: pointer to the event information structure
15029
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 @see
15031 @return Result of the function call
15032*/
15033WDI_Status
15034WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015035(
Jeff Johnson295189b2012-06-20 16:38:30 -070015036 WDI_ControlBlockType* pWDICtx,
15037 WDI_EventInfoType* pEventData
15038)
15039{
15040 WDI_Status wdiStatus;
15041 eHalStatus halStatus;
15042 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15044
15045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 -------------------------------------------------------------------------*/
15048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15049 ( NULL == pEventData->pEventData))
15050 {
15051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 }
15056
15057 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15058
15059 /*-------------------------------------------------------------------------
15060 Extract response and send it to UMAC
15061 -------------------------------------------------------------------------*/
15062 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015064
15065 if ( eHAL_STATUS_SUCCESS != halStatus )
15066 {
15067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15068 "Set STA Key failed with status %s (%d)",
15069 WDI_getHALStatusMsgString(halStatus),
15070 halStatus);
15071 /* send the status to UMAC, don't return from here*/
15072 }
15073
15074 /*Notify UMAC*/
15075 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15076
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015078}/*WDI_ProcessSetSTAKeyRsp*/
15079
15080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015083
15084 @param pWDICtx: pointer to the WLAN DAL context
15085 pEventData: pointer to the event information structure
15086
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 @see
15088 @return Result of the function call
15089*/
15090WDI_Status
15091WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015092(
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 WDI_ControlBlockType* pWDICtx,
15094 WDI_EventInfoType* pEventData
15095)
15096{
15097 WDI_Status wdiStatus;
15098 eHalStatus halStatus;
15099 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15101
15102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 -------------------------------------------------------------------------*/
15105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15106 ( NULL == pEventData->pEventData))
15107 {
15108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 }
15113
15114 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15115
15116 /*-------------------------------------------------------------------------
15117 Extract response and send it to UMAC
15118 -------------------------------------------------------------------------*/
15119 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015121
15122 if ( eHAL_STATUS_SUCCESS != halStatus )
15123 {
15124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15125 "Remove STA Key failed with status %s (%d)",
15126 WDI_getHALStatusMsgString(halStatus),
15127 halStatus);
15128 /* send the status to UMAC, don't return from here*/
15129 }
15130
15131 /*Notify UMAC*/
15132 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15133
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015135}/*WDI_ProcessRemoveStaKeyRsp*/
15136
15137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_Status wdiStatus;
15155 eHalStatus halStatus;
15156 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15158
15159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 -------------------------------------------------------------------------*/
15162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15163 ( NULL == pEventData->pEventData))
15164 {
15165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 }
15170
15171 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15172
15173 /*-------------------------------------------------------------------------
15174 Extract response and send it to UMAC
15175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 wpalMemoryCopy( &halStatus,
15177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 sizeof(halStatus));
15179
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015181
15182 if ( eHAL_STATUS_SUCCESS != halStatus )
15183 {
15184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15185 "Set STA Key failed with status %s (%d)",
15186 WDI_getHALStatusMsgString(halStatus),
15187 halStatus);
15188 /* send the status to UMAC, don't return from here*/
15189 }
15190
15191 /*Notify UMAC*/
15192 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15193
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015195}/*WDI_ProcessSetSTABcastKeyRsp*/
15196
15197/**
15198 @brief Process Remove STA Bcast Key Rsp function (called when a
15199 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
15201 @param pWDICtx: pointer to the WLAN DAL context
15202 pEventData: pointer to the event information structure
15203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 @see
15205 @return Result of the function call
15206*/
15207WDI_Status
15208WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015209(
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 WDI_ControlBlockType* pWDICtx,
15211 WDI_EventInfoType* pEventData
15212)
15213{
15214 WDI_Status wdiStatus;
15215 eHalStatus halStatus;
15216 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15218
15219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 -------------------------------------------------------------------------*/
15222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15223 ( NULL == pEventData->pEventData))
15224 {
15225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 }
15230
15231 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15232
15233 /*-------------------------------------------------------------------------
15234 Extract response and send it to UMAC
15235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 wpalMemoryCopy( &halStatus,
15237 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 sizeof(halStatus));
15239
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015241
15242 if ( eHAL_STATUS_SUCCESS != halStatus )
15243 {
15244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15245 "Remove STA Key failed with status %s (%d)",
15246 WDI_getHALStatusMsgString(halStatus),
15247 halStatus);
15248 /* send the status to UMAC, don't return from here*/
15249 }
15250
15251 /*Notify UMAC*/
15252 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15253
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015255}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15256
15257
15258/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015260==========================================================================*/
15261
15262/**
15263 @brief Process Add TSpec Rsp function (called when a response
15264 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015265
15266 @param pWDICtx: pointer to the WLAN DAL context
15267 pEventData: pointer to the event information structure
15268
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 @see
15270 @return Result of the function call
15271*/
15272WDI_Status
15273WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015274(
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 WDI_ControlBlockType* pWDICtx,
15276 WDI_EventInfoType* pEventData
15277)
15278{
15279 WDI_Status wdiStatus;
15280 eHalStatus halStatus;
15281 WDI_AddTsRspCb wdiAddTsRspCb;
15282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15283
15284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 -------------------------------------------------------------------------*/
15287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15288 ( NULL == pEventData->pEventData))
15289 {
15290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 }
15295
15296 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15297
15298 /*-------------------------------------------------------------------------
15299 Extract response and send it to UMAC
15300 -------------------------------------------------------------------------*/
15301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015303
15304 /*Notify UMAC*/
15305 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15306
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015308}/*WDI_ProcessAddTSpecRsp*/
15309
15310
15311/**
15312 @brief Process Del TSpec Rsp function (called when a response
15313 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015314
15315 @param pWDICtx: pointer to the WLAN DAL context
15316 pEventData: pointer to the event information structure
15317
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 @see
15319 @return Result of the function call
15320*/
15321WDI_Status
15322WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015323(
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 WDI_ControlBlockType* pWDICtx,
15325 WDI_EventInfoType* pEventData
15326)
15327{
15328 WDI_Status wdiStatus;
15329 eHalStatus halStatus;
15330 WDI_DelTsRspCb wdiDelTsRspCb;
15331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15332
15333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 -------------------------------------------------------------------------*/
15336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15337 ( NULL == pEventData->pEventData))
15338 {
15339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 }
15344
15345 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15346
15347 /*-------------------------------------------------------------------------
15348 Extract response and send it to UMAC
15349 -------------------------------------------------------------------------*/
15350 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015352
15353 /*Notify UMAC*/
15354 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15355
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015357}/*WDI_ProcessDelTSpecRsp*/
15358
15359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015362
15363 @param pWDICtx: pointer to the WLAN DAL context
15364 pEventData: pointer to the event information structure
15365
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 @see
15367 @return Result of the function call
15368*/
15369WDI_Status
15370WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015371(
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 WDI_ControlBlockType* pWDICtx,
15373 WDI_EventInfoType* pEventData
15374)
15375{
15376 WDI_Status wdiStatus;
15377 eHalStatus halStatus;
15378 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15380
15381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 -------------------------------------------------------------------------*/
15384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15385 ( NULL == pEventData->pEventData))
15386 {
15387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 }
15392
15393 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15394
15395 /*-------------------------------------------------------------------------
15396 Extract response and send it to UMAC
15397 -------------------------------------------------------------------------*/
15398 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015399 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015400
15401 /*Notify UMAC*/
15402 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15403
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405}/*WDI_ProcessUpdateEDCAParamsRsp*/
15406
15407
15408/**
15409 @brief Process Add BA Rsp function (called when a response
15410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015411
15412 @param pWDICtx: pointer to the WLAN DAL context
15413 pEventData: pointer to the event information structure
15414
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 @see
15416 @return Result of the function call
15417*/
15418WDI_Status
15419WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015420(
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 WDI_ControlBlockType* pWDICtx,
15422 WDI_EventInfoType* pEventData
15423)
15424{
15425 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15426
15427 tAddBASessionRspParams halBASessionRsp;
15428 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15429
Jeff Johnsone7245742012-09-05 17:12:55 -070015430
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15432
15433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 -------------------------------------------------------------------------*/
15436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15437 ( NULL == pEventData->pEventData))
15438 {
15439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 }
15444
15445 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15446
15447 /*-------------------------------------------------------------------------
15448 Extract response and send it to UMAC
15449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 wpalMemoryCopy( &halBASessionRsp,
15451 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 sizeof(halBASessionRsp));
15453
15454 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15455
Jeff Johnson43971f52012-07-17 12:26:56 -070015456 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 {
15458 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15459 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15460 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15461 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15462 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15463 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15464 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15465 }
15466
15467 /*Notify UMAC*/
15468 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15469
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015471}/*WDI_ProcessAddSessionBARsp*/
15472
15473
15474/**
15475 @brief Process Del BA Rsp function (called when a response
15476 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015477
15478 @param pWDICtx: pointer to the WLAN DAL context
15479 pEventData: pointer to the event information structure
15480
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 @see
15482 @return Result of the function call
15483*/
15484WDI_Status
15485WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015486(
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 WDI_ControlBlockType* pWDICtx,
15488 WDI_EventInfoType* pEventData
15489)
15490{
15491 WDI_Status wdiStatus;
15492 eHalStatus halStatus;
15493 WDI_DelBARspCb wdiDelBARspCb;
15494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15495
15496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 -------------------------------------------------------------------------*/
15499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15500 ( NULL == pEventData->pEventData))
15501 {
15502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 }
15507
15508 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15509
15510 /*-------------------------------------------------------------------------
15511 Extract response and send it to UMAC
15512 -------------------------------------------------------------------------*/
15513 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015515
15516 if ( eHAL_STATUS_SUCCESS == halStatus )
15517 {
15518 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15519 }
15520
15521 /*Notify UMAC*/
15522 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15523
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015525}/*WDI_ProcessDelBARsp*/
15526
15527#ifdef FEATURE_WLAN_CCX
15528/**
15529 @brief Process TSM Stats Rsp function (called when a response
15530 is being received over the bus from HAL)
15531
15532 @param pWDICtx: pointer to the WLAN DAL context
15533 pEventData: pointer to the event information structure
15534
15535 @see
15536 @return Result of the function call
15537*/
15538WDI_Status
15539WDI_ProcessTsmStatsRsp
15540(
15541 WDI_ControlBlockType* pWDICtx,
15542 WDI_EventInfoType* pEventData
15543)
15544{
15545 WDI_TsmRspCb wdiTsmStatsRspCb;
15546 tTsmStatsRspMsg halTsmStatsRspMsg;
15547 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15549
15550 /*-------------------------------------------------------------------------
15551 Sanity check
15552 -------------------------------------------------------------------------*/
15553 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15554 ( NULL == pEventData->pEventData))
15555 {
15556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 WDI_ASSERT(0);
15559 return WDI_STATUS_E_FAILURE;
15560 }
15561
15562 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15563
15564 /*-------------------------------------------------------------------------
15565 Unpack HAL Response Message - the header was already extracted by the
15566 main Response Handling procedure
15567 -------------------------------------------------------------------------*/
15568 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15569 pEventData->pEventData,
15570 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15571
15572 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15573 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15574 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15575 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15576 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15577 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15578 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15579 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15580 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15581 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15582 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15583 halTsmStatsRspMsg.tsmStatsRspParams.status);
15584
15585 /*Notify UMAC*/
15586 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15587
15588 return WDI_STATUS_SUCCESS;
15589}/*WDI_ProcessTsmStatsRsp*/
15590
15591#endif
15592
15593
15594
15595/**
15596 @brief Process Flush AC Rsp function (called when a response
15597 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015598
15599 @param pWDICtx: pointer to the WLAN DAL context
15600 pEventData: pointer to the event information structure
15601
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 @see
15603 @return Result of the function call
15604*/
15605WDI_Status
15606WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015607(
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 WDI_ControlBlockType* pWDICtx,
15609 WDI_EventInfoType* pEventData
15610)
15611{
15612 WDI_Status wdiStatus;
15613 eHalStatus halStatus;
15614 WDI_FlushAcRspCb wdiFlushAcRspCb;
15615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15616
15617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 -------------------------------------------------------------------------*/
15620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15621 ( NULL == pEventData->pEventData))
15622 {
15623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 }
15628
15629 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15630
15631 /*-------------------------------------------------------------------------
15632 Extract response and send it to UMAC
15633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 wpalMemoryCopy( &halStatus,
15635 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 sizeof(halStatus));
15637
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015639
15640 /*Notify UMAC*/
15641 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15642
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644}/*WDI_ProcessFlushAcRsp*/
15645
15646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015649
15650 @param pWDICtx: pointer to the WLAN DAL context
15651 pEventData: pointer to the event information structure
15652
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 @see
15654 @return Result of the function call
15655*/
15656WDI_Status
15657WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015658(
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 WDI_ControlBlockType* pWDICtx,
15660 WDI_EventInfoType* pEventData
15661)
15662{
15663 WDI_Status wdiStatus;
15664 eHalStatus halStatus;
15665 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15667
15668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 -------------------------------------------------------------------------*/
15671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15672 ( NULL == pEventData->pEventData))
15673 {
15674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 }
15679
15680 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15681
15682 /*-------------------------------------------------------------------------
15683 Extract response and send it to UMAC
15684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 wpalMemoryCopy( &halStatus,
15686 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 sizeof(halStatus));
15688
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015690
15691 /*Notify UMAC*/
15692 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15693
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015695}/*WDI_ProcessBtAmpEventRsp*/
15696
15697
15698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015701
15702 @param pWDICtx: pointer to the WLAN DAL context
15703 pEventData: pointer to the event information structure
15704
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 @see
15706 @return Result of the function call
15707*/
15708WDI_Status
15709WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015710(
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 WDI_ControlBlockType* pWDICtx,
15712 WDI_EventInfoType* pEventData
15713)
15714{
15715 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
15716 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
15717 tAddStaSelfRspMsg halAddStaSelfRsp;
15718 WDI_AddStaParams wdiAddSTAParam = {0};
15719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15720
15721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 -------------------------------------------------------------------------*/
15724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15725 ( NULL == pEventData->pEventData))
15726 {
15727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 }
15732
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
15735
15736 /*-------------------------------------------------------------------------
15737 Extract response and send it to UMAC
15738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
15740 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
15742
15743
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 wdiAddSTASelfParams.wdiStatus =
15745 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015746
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
15753
15754 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
15755 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
15756 WDI_MAC_ADDR_LEN);
15757
15758
15759#ifdef HAL_SELF_STA_PER_BSS
15760
15761 /* At this point add the self-STA */
15762
15763 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15764 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15765 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15766
15767 //all DPU indices are the same for self STA
15768
15769 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
15772 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
15773 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
15774 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
15775 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
15776
15777 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
15778 WDI_MAC_ADDR_LEN);
15779
15780 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15781 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
15782
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
15785 {
15786 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15787 }
15788#endif
15789
15790 /*Notify UMAC*/
15791 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
15792
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015794}/*WDI_ProcessAddSTASelfRsp*/
15795
15796
15797
15798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015801
15802 @param pWDICtx: pointer to the WLAN DAL context
15803 pEventData: pointer to the event information structure
15804
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 @see
15806 @return Result of the function call
15807*/
15808WDI_Status
15809WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015810(
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 WDI_ControlBlockType* pWDICtx,
15812 WDI_EventInfoType* pEventData
15813)
15814{
15815 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
15816 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
15817 tDelStaSelfRspParams delStaSelfRspParams;
15818 wpt_uint8 ucStaIdx;
15819
15820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15821
15822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -------------------------------------------------------------------------*/
15825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15826 ( NULL == pEventData->pEventData))
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
15833
15834 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
15835
15836 /*-------------------------------------------------------------------------
15837 Extract response and send it to UMAC
15838 -------------------------------------------------------------------------*/
15839
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 (wpt_uint8*)pEventData->pEventData,
15842 sizeof(tDelStaSelfRspParams));
15843
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 wdiDelStaSelfRspParams.wdiStatus =
15845 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015846
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
15849 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
15850 {
15851 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 delStaSelfRspParams.selfMacAddr,
15854 &ucStaIdx);
15855 if(WDI_STATUS_E_FAILURE == wdiStatus)
15856 {
15857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015858 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 }
15862 WDI_STATableDelSta(pWDICtx, ucStaIdx);
15863 }
15864
15865 /*Notify UMAC*/
15866 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
15867
15868 return WDI_STATUS_SUCCESS;
15869}
15870
Jeff Johnsone7245742012-09-05 17:12:55 -070015871#ifdef FEATURE_OEM_DATA_SUPPORT
15872/**
15873 @brief Start Oem Data Rsp function (called when a
15874 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070015875
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 @param pWDICtx: pointer to the WLAN DAL context
15877 pEventData: pointer to the event information structure
15878
15879 @see
15880 @return Result of the function call
15881*/
15882#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
15883
15884WDI_Status
15885WDI_ProcessStartOemDataRsp
15886(
15887 WDI_ControlBlockType* pWDICtx,
15888 WDI_EventInfoType* pEventData
15889)
15890{
15891 WDI_oemDataRspCb wdiOemDataRspCb;
15892 WDI_oemDataRspParamsType* wdiOemDataRspParams;
15893 tStartOemDataRspParams* halStartOemDataRspParams;
15894
15895 /*-------------------------------------------------------------------------
15896 Sanity check
15897 -------------------------------------------------------------------------*/
15898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15899 ( NULL == pEventData->pEventData))
15900 {
15901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015902 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 WDI_ASSERT(0);
15904 return WDI_STATUS_E_FAILURE;
15905 }
15906
15907 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
15908
15909 /*-------------------------------------------------------------------------
15910 Extract response and send it to UMAC
15911 -------------------------------------------------------------------------*/
15912 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
15913
15914
15915 //It is the responsibility of the application code to check for failure
15916 //conditions!
15917
15918 //Allocate memory for WDI OEM DATA RSP structure
15919 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
15920
15921 if(NULL == wdiOemDataRspParams)
15922 {
15923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15924 "Failed to allocate memory in OEM DATA Response %x %x %x ",
15925 pWDICtx, pEventData, pEventData->pEventData);
15926 WDI_ASSERT(0);
15927 return WDI_STATUS_E_FAILURE;
15928 }
15929
15930 /* Populate WDI structure members */
15931 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
15932
15933 /*Notify UMAC*/
15934 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
15935
15936 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
15937 wpalMemoryFree(wdiOemDataRspParams);
15938
15939 return WDI_STATUS_SUCCESS;
15940}/*WDI_PrcoessStartOemDataRsp*/
15941#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015945===========================================================================*/
15946
15947/**
15948 @brief Process Channel Switch Rsp function (called when a response
15949 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015950
15951 @param pWDICtx: pointer to the WLAN DAL context
15952 pEventData: pointer to the event information structure
15953
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 @see
15955 @return Result of the function call
15956*/
15957WDI_Status
15958WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015959(
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 WDI_ControlBlockType* pWDICtx,
15961 WDI_EventInfoType* pEventData
15962)
15963{
15964 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
15965 WDI_SwitchChRspCb wdiChSwitchRspCb;
15966 tSwitchChannelRspParams halSwitchChannelRsp;
15967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15968
15969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 -------------------------------------------------------------------------*/
15972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15973 ( NULL == pEventData->pEventData))
15974 {
15975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 }
15980
15981 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
15982
15983 /*-------------------------------------------------------------------------
15984 Extract response and send it to UMAC
15985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 (wpt_uint8*)pEventData->pEventData,
15988 sizeof(halSwitchChannelRsp));
15989
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 wdiSwitchChRsp.wdiStatus =
15991 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
15993
15994#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070015996#endif
15997
15998 /*Notify UMAC*/
15999 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16000
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016002}/*WDI_ProcessChannelSwitchRsp*/
16003
16004
16005/**
16006 @brief Process Config STA Rsp function (called when a response
16007 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016008
16009 @param pWDICtx: pointer to the WLAN DAL context
16010 pEventData: pointer to the event information structure
16011
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 @see
16013 @return Result of the function call
16014*/
16015WDI_Status
16016WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016017(
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 WDI_ControlBlockType* pWDICtx,
16019 WDI_EventInfoType* pEventData
16020)
16021{
16022 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16023 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16024 WDI_AddStaParams wdiAddSTAParam;
16025
16026 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16031
16032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 -------------------------------------------------------------------------*/
16035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16036 ( NULL == pEventData->pEventData))
16037 {
16038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 }
16043
16044 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16045
16046 /*-------------------------------------------------------------------------
16047 Extract response and send it to UMAC
16048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16050 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 sizeof(halConfigStaRsp.configStaRspParams));
16052
16053
16054 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16055 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16056 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16057 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16058 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16059
16060 /* MAC Address of STA - take from cache as it does not come back in the
16061 response*/
16062 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016065
16066 wdiCfgSTAParams.wdiStatus =
16067 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016068
16069 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16070 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16071 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16072
16073 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16074 {
16075 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16076 {
16077 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16080 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016081
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016083 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 wdiAddSTAParam.ucHTCapable =
16086 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16087 wdiAddSTAParam.ucStaType =
16088 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16089
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16092 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016094
16095 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16096 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16097 WDI_MAC_ADDR_LEN);
16098
16099 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16100 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16101 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016102
16103 if ( NULL == pBSSSes )
16104 {
16105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16106 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016107
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 }
16111
16112 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 halConfigStaRsp.configStaRspParams.ucBcastSig;
16121 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16122 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016123
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16125 }
16126 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16127 {
16128 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 halConfigStaRsp.configStaRspParams.ucUcastSig;
16144 }
16145 }
16146
16147 /*Notify UMAC*/
16148 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16149
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016151}/*WDI_ProcessConfigStaRsp*/
16152
16153
16154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016157
16158 @param pWDICtx: pointer to the WLAN DAL context
16159 pEventData: pointer to the event information structure
16160
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 @see
16162 @return Result of the function call
16163*/
16164WDI_Status
16165WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016166(
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 WDI_ControlBlockType* pWDICtx,
16168 WDI_EventInfoType* pEventData
16169)
16170{
16171 WDI_Status wdiStatus;
16172 eHalStatus halStatus;
16173 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16174
16175 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016176 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16178
16179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 -------------------------------------------------------------------------*/
16182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16183 ( NULL == pEventData->pEventData))
16184 {
16185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 }
16190
16191 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16192
16193 wpalMutexAcquire(&pWDICtx->wptMutex);
16194
16195 /*If the link is being transitioned to idle - the BSS is to be deleted
16196 - this type of ending a session is possible when UMAC has failed an
16197 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16200 {
16201 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16205 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16206 &pBSSSes);
16207
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 /*-----------------------------------------------------------------------
16209 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 -----------------------------------------------------------------------*/
16212 if ( NULL == pBSSSes )
16213 {
16214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16215 "Set link response received outside association session");
16216 }
16217 else
16218 {
16219 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16220 will be del BSS coming after this to stop the beaconing & cleaning up the
16221 sessions*/
16222 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16223 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16224 {
16225 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016226 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 -----------------------------------------------------------------------*/
16228 WDI_DeleteSession(pWDICtx, pBSSSes);
16229
16230 /*-----------------------------------------------------------------------
16231 Check to see if this association is in progress - if so disable the
16232 flag as this has ended
16233 -----------------------------------------------------------------------*/
16234 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 /*Association no longer in progress */
16237 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16238 /*Association no longer in progress - prepare pending assoc for processing*/
16239 WDI_DequeueAssocRequest(pWDICtx);
16240 }
16241 }
16242 }
16243 }
16244 /* If the link state has been set to POST ASSOC, reset the "association in
16245 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16248 {
16249 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16250 WDI_DequeueAssocRequest(pWDICtx);
16251 }
16252
16253 wpalMutexRelease(&pWDICtx->wptMutex);
16254
16255 /*-------------------------------------------------------------------------
16256 Extract response and send it to UMAC
16257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 wpalMemoryCopy( &halStatus,
16259 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 sizeof(halStatus));
16261
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016263
16264 /*Notify UMAC*/
16265 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16266
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016268}/*WDI_ProcessSetLinkStateRsp*/
16269
16270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016273
16274 @param pWDICtx: pointer to the WLAN DAL context
16275 pEventData: pointer to the event information structure
16276
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 @see
16278 @return Result of the function call
16279*/
16280WDI_Status
16281WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016282(
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 WDI_ControlBlockType* pWDICtx,
16284 WDI_EventInfoType* pEventData
16285)
16286{
16287 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16288 WDI_GetStatsRspCb wdiGetStatsRspCb;
16289 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016290
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16292
16293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 -------------------------------------------------------------------------*/
16296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16297 ( NULL == pEventData->pEventData))
16298 {
16299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 }
16304
16305 /*-------------------------------------------------------------------------
16306 Extract response and send it to UMAC
16307 -------------------------------------------------------------------------*/
16308 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16309
16310 /*allocate the stats response buffer */
16311 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16312 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16313 + sizeof(WDI_GetStatsRspParamsType));
16314
16315 if(NULL == wdiGetStatsRsp)
16316 {
16317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16318 "Failed to allocate memory in Get Stats Response %x %x %x ",
16319 pWDICtx, pEventData, pEventData->pEventData);
16320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 }
16323
16324 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16325
16326 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16327 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16328 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16329 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16330 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16331 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16332
16333 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16334 wpalMemoryCopy(wdiGetStatsRsp + 1,
16335 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16336 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16337
16338 /*Notify UMAC*/
16339 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16340
16341 wpalMemoryFree(wdiGetStatsRsp);
16342
Jeff Johnsone7245742012-09-05 17:12:55 -070016343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016344}/*WDI_ProcessGetStatsRsp*/
16345
16346
16347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016348 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016350
16351 @param pWDICtx: pointer to the WLAN DAL context
16352 pEventData: pointer to the event information structure
16353
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 @see
16355 @return Result of the function call
16356*/
16357WDI_Status
16358WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016359(
Jeff Johnson295189b2012-06-20 16:38:30 -070016360 WDI_ControlBlockType* pWDICtx,
16361 WDI_EventInfoType* pEventData
16362)
16363{
16364 WDI_Status wdiStatus;
16365 eHalStatus halStatus;
16366 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16368
16369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 -------------------------------------------------------------------------*/
16372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16373 ( NULL == pEventData->pEventData))
16374 {
16375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 }
16380
16381 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16382
16383 /*-------------------------------------------------------------------------
16384 Extract response and send it to UMAC
16385 -------------------------------------------------------------------------*/
16386 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016388
16389 /*Notify UMAC*/
16390 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16391
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016393}/*WDI_ProcessUpdateCfgRsp*/
16394
16395
16396
16397/**
16398 @brief Process Add BA Rsp function (called when a response
16399 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016400
16401 @param pWDICtx: pointer to the WLAN DAL context
16402 pEventData: pointer to the event information structure
16403
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 @see
16405 @return Result of the function call
16406*/
16407WDI_Status
16408WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016409(
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 WDI_ControlBlockType* pWDICtx,
16411 WDI_EventInfoType* pEventData
16412)
16413{
16414 WDI_AddBARspCb wdiAddBARspCb;
16415
16416 tAddBARspParams halAddBARsp;
16417 WDI_AddBARspinfoType wdiAddBARsp;
16418
16419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16420
16421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 -------------------------------------------------------------------------*/
16424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16425 ( NULL == pEventData->pEventData))
16426 {
16427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 }
16432
16433 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16434
16435 /*-------------------------------------------------------------------------
16436 Extract response and send it to UMAC
16437 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016438 wpalMemoryCopy( &halAddBARsp,
16439 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 sizeof(halAddBARsp));
16441
16442 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16443
Jeff Johnson43971f52012-07-17 12:26:56 -070016444 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 {
16446 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16447 }
16448
16449 /*Notify UMAC*/
16450 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16451
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016453}/*WDI_ProcessAddSessionBARsp*/
16454
16455/**
16456 @brief Process Add BA Rsp function (called when a response
16457 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016458
16459 @param pWDICtx: pointer to the WLAN DAL context
16460 pEventData: pointer to the event information structure
16461
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 @see
16463 @return Result of the function call
16464*/
16465WDI_Status
16466WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016467(
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 WDI_ControlBlockType* pWDICtx,
16469 WDI_EventInfoType* pEventData
16470)
16471{
16472 WDI_TriggerBARspCb wdiTriggerBARspCb;
16473
16474 tTriggerBARspParams* halTriggerBARsp;
16475 tTriggerBaRspCandidate* halBaCandidate;
16476 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16477 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16478 wpt_uint16 index;
16479 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016480
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16482
16483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 -------------------------------------------------------------------------*/
16486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16487 ( NULL == pEventData->pEventData))
16488 {
16489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 }
16494
16495 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16496
16497 /*-------------------------------------------------------------------------
16498 Extract response and send it to UMAC
16499 -------------------------------------------------------------------------*/
16500 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16501
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16503 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 sizeof(WDI_TriggerBARspCandidateType));
16505 if(NULL == wdiTriggerBARsp)
16506 {
16507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16508 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16509 pWDICtx, pEventData, pEventData->pEventData);
16510 wpalMemoryFree(halTriggerBARsp);
16511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16516
16517 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16518 {
16519 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16522
16523 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16524 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16525
16526 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16527 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16530 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16536 }
16537 wdiTriggerBARspCandidate++;
16538 halBaCandidate++;
16539 }
16540 }
16541
16542 /*Notify UMAC*/
16543 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16544
16545 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016547}/*WDI_ProcessAddSessionBARsp*/
16548
16549/**
16550 @brief Process Update Beacon Params Rsp function (called when a response
16551 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016552
16553 @param pWDICtx: pointer to the WLAN DAL context
16554 pEventData: pointer to the event information structure
16555
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 @see
16557 @return Result of the function call
16558*/
16559WDI_Status
16560WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016561(
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 WDI_ControlBlockType* pWDICtx,
16563 WDI_EventInfoType* pEventData
16564)
16565{
16566 WDI_Status wdiStatus;
16567 eHalStatus halStatus;
16568 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16570
16571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 -------------------------------------------------------------------------*/
16574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16575 ( NULL == pEventData->pEventData))
16576 {
16577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 }
16582
16583 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16584
16585 /*-------------------------------------------------------------------------
16586 Extract response and send it to UMAC
16587 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 wpalMemoryCopy( &halStatus,
16589 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 sizeof(halStatus));
16591
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016593
16594 /*Notify UMAC*/
16595 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16596
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016598}/*WDI_ProcessUpdateBeaconParamsRsp*/
16599
16600/**
16601 @brief Process Send Beacon template Rsp function (called when a response
16602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016603
16604 @param pWDICtx: pointer to the WLAN DAL context
16605 pEventData: pointer to the event information structure
16606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 @see
16608 @return Result of the function call
16609*/
16610WDI_Status
16611WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016612(
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 WDI_ControlBlockType* pWDICtx,
16614 WDI_EventInfoType* pEventData
16615)
16616{
16617 WDI_Status wdiStatus;
16618 eHalStatus halStatus;
16619 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16621
16622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 -------------------------------------------------------------------------*/
16625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16626 ( NULL == pEventData->pEventData))
16627 {
16628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 }
16633
16634 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
16635
16636 /*-------------------------------------------------------------------------
16637 Extract response and send it to UMAC
16638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wpalMemoryCopy( &halStatus,
16640 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 sizeof(halStatus));
16642
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016644
16645 /*Notify UMAC*/
16646 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16647
Jeff Johnsone7245742012-09-05 17:12:55 -070016648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016649}/*WDI_ProcessSendBeaconParamsRsp*/
16650
Jeff Johnsone7245742012-09-05 17:12:55 -070016651
Jeff Johnson295189b2012-06-20 16:38:30 -070016652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016653 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016655
16656 @param pWDICtx: pointer to the WLAN DAL context
16657 pEventData: pointer to the event information structure
16658
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 @see
16660 @return Result of the function call
16661*/
16662WDI_Status
16663WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016664(
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 WDI_ControlBlockType* pWDICtx,
16666 WDI_EventInfoType* pEventData
16667)
16668{
16669 WDI_Status wdiStatus;
16670 eHalStatus halStatus;
16671 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
16672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16673
16674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 -------------------------------------------------------------------------*/
16677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16678 ( NULL == pEventData->pEventData))
16679 {
16680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 }
16685
16686 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
16687
16688 /*-------------------------------------------------------------------------
16689 Extract response and send it to UMAC
16690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 wpalMemoryCopy( &halStatus,
16692 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 sizeof(halStatus));
16694
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016696
16697 /*Notify UMAC*/
16698 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16699
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
16702
16703 /**
16704 @brief Process Set Max Tx Power Rsp function (called when a response
16705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016706
16707 @param pWDICtx: pointer to the WLAN DAL context
16708 pEventData: pointer to the event information structure
16709
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 @see
16711 @return Result of the function call
16712*/
16713WDI_Status
16714WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016715(
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 WDI_ControlBlockType* pWDICtx,
16717 WDI_EventInfoType* pEventData
16718)
16719{
16720 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070016723
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
16725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16726
16727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 -------------------------------------------------------------------------*/
16730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16731 ( NULL == pEventData->pEventData))
16732 {
16733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 }
16738
16739 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
16740
16741 /*-------------------------------------------------------------------------
16742 Extract response and send it to UMAC
16743 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016744 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
16745 pEventData->pEventData,
16746 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016747
16748 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
16749 {
16750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16751 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 }
16755
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070016759
16760 /*Notify UMAC*/
16761 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
16762
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016764}
16765
16766#ifdef WLAN_FEATURE_P2P
16767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016768 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016769 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016770
16771 @param pWDICtx: pointer to the WLAN DAL context
16772 pEventData: pointer to the event information structure
16773
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 @see
16775 @return Result of the function call
16776*/
16777WDI_Status
16778WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016779(
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 WDI_ControlBlockType* pWDICtx,
16781 WDI_EventInfoType* pEventData
16782)
16783{
16784 WDI_Status wdiStatus;
16785 eHalStatus halStatus;
16786 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
16787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16788
16789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 -------------------------------------------------------------------------*/
16792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16793 ( NULL == pEventData->pEventData))
16794 {
16795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 }
16800
16801 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
16802
16803 /*-------------------------------------------------------------------------
16804 Extract response and send it to UMAC
16805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 wpalMemoryCopy( &halStatus,
16807 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 sizeof(halStatus));
16809
Jeff Johnsone7245742012-09-05 17:12:55 -070016810 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016811
16812 /*Notify UMAC*/
16813 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16814
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016816}/*WDI_ProcessP2PGONOARsp*/
16817#endif
16818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016821
16822 @param pWDICtx: pointer to the WLAN DAL context
16823 pEventData: pointer to the event information structure
16824
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 @see
16826 @return Result of the function call
16827*/
16828WDI_Status
16829WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016830(
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 WDI_ControlBlockType* pWDICtx,
16832 WDI_EventInfoType* pEventData
16833)
16834{
16835 WDI_Status wdiStatus;
16836 eHalStatus halStatus;
16837 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016838 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16840
16841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 -------------------------------------------------------------------------*/
16844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16845 ( NULL == pEventData->pEventData))
16846 {
16847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 }
16852
16853 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
16854
16855 /*-------------------------------------------------------------------------
16856 Extract response and send it to UMAC
16857 -------------------------------------------------------------------------*/
16858 halStatus = *((eHalStatus*)pEventData->pEventData);
16859
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016861
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016862 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
16863 * Other module states are taken care by PMC.
16864 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
16865 */
16866 if (wdiStatus != WDI_STATUS_SUCCESS) {
16867
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070016868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16869 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
16870 halStatus);
16871 /* Call Back is not required as we are putting the DXE in FULL
16872 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016873 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16874
16875 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16877 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16878 WDI_ASSERT(0);
16879 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070016880 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 /*Notify UMAC*/
16882 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16883
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016885}/*WDI_ProcessEnterImpsRsp*/
16886
16887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016890
16891 @param pWDICtx: pointer to the WLAN DAL context
16892 pEventData: pointer to the event information structure
16893
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 @see
16895 @return Result of the function call
16896*/
16897WDI_Status
16898WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016899(
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 WDI_ControlBlockType* pWDICtx,
16901 WDI_EventInfoType* pEventData
16902)
16903{
16904 WDI_Status wdiStatus;
16905 eHalStatus halStatus;
16906 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016907 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16909
16910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 -------------------------------------------------------------------------*/
16913 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16914 ( NULL == pEventData->pEventData))
16915 {
16916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 }
16921
16922 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
16923
16924 /*-------------------------------------------------------------------------
16925 Extract response and send it to UMAC
16926 -------------------------------------------------------------------------*/
16927 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016929
16930 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016931 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16932 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16933 {
16934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16935 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
16936 WDI_ASSERT(0);
16937 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 /*Notify UMAC*/
16939 wdiExitImpsRspCb( 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_ProcessExitImpsRsp*/
16943
16944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 @brief Process Enter BMPS 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_ProcessEnterBmpsRsp
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{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016961 eHalStatus halStatus = eHAL_STATUS_FAILURE;
16962 tHalEnterBmpsRspParams halEnterBmpsRsp;
16963 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
16964 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080016965 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16967
16968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 -------------------------------------------------------------------------*/
16971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16972 ( NULL == pEventData->pEventData))
16973 {
16974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 }
16979
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016981 Extract response and send it to UMAC
16982 -------------------------------------------------------------------------*/
16983 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
16984 {
16985 wpalMemoryCopy( &halEnterBmpsRsp,
16986 pEventData->pEventData,
16987 sizeof(halEnterBmpsRsp));
16988
16989 //Used to print debug message
16990 halStatus = halEnterBmpsRsp.status;
16991 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
16992 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
16993 }
16994 else
16995 {
16996 halStatus = *((eHalStatus*)pEventData->pEventData);
16997 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
16998 }
16999
17000 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017001
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017002 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17003 * Other module states are taken care by PMC.
17004 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17005 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017006 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17007 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017010 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17011 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017012 /* Call Back is not required as we are putting the DXE in FULL
17013 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017014 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17015 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17016 {
17017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17018 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17019 WDI_ASSERT(0);
17020 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017021 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017022 }
17023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017025 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028}/*WDI_ProcessEnterBmpsRsp*/
17029
17030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017033
17034 @param pWDICtx: pointer to the WLAN DAL context
17035 pEventData: pointer to the event information structure
17036
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 @see
17038 @return Result of the function call
17039*/
17040WDI_Status
17041WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017042(
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 WDI_ControlBlockType* pWDICtx,
17044 WDI_EventInfoType* pEventData
17045)
17046{
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 eHalStatus halStatus;
17048 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017049 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017050 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17051 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17053
17054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 -------------------------------------------------------------------------*/
17057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17058 ( NULL == pEventData->pEventData))
17059 {
17060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 }
17065
17066 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17067
17068 /*-------------------------------------------------------------------------
17069 Extract response and send it to UMAC
17070 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017071
17072 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17073 {
17074 wpalMemoryCopy( &halExitBmpsRsp,
17075 pEventData->pEventData,
17076 sizeof(halExitBmpsRsp));
17077
17078 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17079 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17080 }
17081 else
17082 {
17083 halStatus = *((eHalStatus*)pEventData->pEventData);
17084 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17085 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017086
17087 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017088 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17089 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17090 {
17091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17092 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17093 WDI_ASSERT(0);
17094 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17096
17097 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017098 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017099
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017101}/*WDI_ProcessExitBmpsRsp*/
17102
17103/**
17104 @brief Process Enter UAPSD Rsp function (called when a response
17105 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017106
17107 @param pWDICtx: pointer to the WLAN DAL context
17108 pEventData: pointer to the event information structure
17109
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 @see
17111 @return Result of the function call
17112*/
17113WDI_Status
17114WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017115(
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 WDI_ControlBlockType* pWDICtx,
17117 WDI_EventInfoType* pEventData
17118)
17119{
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017121 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017123 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17124
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17126
17127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 -------------------------------------------------------------------------*/
17130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17131 ( NULL == pEventData->pEventData))
17132 {
17133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 }
17138
17139 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17140
17141 /*-------------------------------------------------------------------------
17142 Extract response and send it to UMAC
17143 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017144 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17145 {
17146 wpalMemoryCopy( &halEnterUapsdRsp,
17147 pEventData->pEventData,
17148 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017150 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17151 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17152 }
17153 else
17154 {
17155 halStatus = *((eHalStatus*)pEventData->pEventData);
17156 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17157 }
17158
17159 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 {
17161 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17162 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17163 // the traffic to decide when to suspend the trigger frames when there is no traffic
17164 // activity on the trigger enabled ACs
17165 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17166
17167#ifdef WLAN_PERF
17168 // Increment the BD signature to refresh the fast path BD utilization
17169 pWDICtx->uBdSigSerialNum++;
17170#endif
17171 }
17172
17173 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017174 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017175
Jeff Johnsone7245742012-09-05 17:12:55 -070017176 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017177}/*WDI_ProcessEnterUapsdRsp*/
17178
17179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017182
17183 @param pWDICtx: pointer to the WLAN DAL context
17184 pEventData: pointer to the event information structure
17185
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 @see
17187 @return Result of the function call
17188*/
17189WDI_Status
17190WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017191(
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 WDI_ControlBlockType* pWDICtx,
17193 WDI_EventInfoType* pEventData
17194)
17195{
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 eHalStatus halStatus;
17197 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017198 tHalExitUapsdRspParams halExitUapsdRsp;
17199 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17201
17202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 -------------------------------------------------------------------------*/
17205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17206 ( NULL == pEventData->pEventData))
17207 {
17208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 }
17213
17214 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17215
17216 /*-------------------------------------------------------------------------
17217 Extract response and send it to UMAC
17218 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017219 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17220 {
17221 wpalMemoryCopy( &halExitUapsdRsp,
17222 pEventData->pEventData,
17223 sizeof(halExitUapsdRsp));
17224
17225 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17226 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17227 }
17228 else
17229 {
17230 halStatus = *((eHalStatus*)pEventData->pEventData);
17231 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17232 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17234 // directly instead of the FW WQ.
17235 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17236
17237#ifdef WLAN_PERF
17238 // Increment the BD signature to refresh the fast path BD utilization
17239 pWDICtx->uBdSigSerialNum++;
17240#endif
17241
17242 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017243 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017244
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017246}/*WDI_ProcessExitUapsdRsp*/
17247
17248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017251
17252 @param pWDICtx: pointer to the WLAN DAL context
17253 pEventData: pointer to the event information structure
17254
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 @see
17256 @return Result of the function call
17257*/
17258WDI_Status
17259WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017260(
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 WDI_ControlBlockType* pWDICtx,
17262 WDI_EventInfoType* pEventData
17263)
17264{
17265 WDI_Status wdiStatus;
17266 eHalStatus halStatus;
17267 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17269
17270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 -------------------------------------------------------------------------*/
17273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17274 ( NULL == pEventData->pEventData))
17275 {
17276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 }
17281
17282 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17283
17284 /*-------------------------------------------------------------------------
17285 Extract response and send it to UMAC
17286 -------------------------------------------------------------------------*/
17287 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017289
17290 /*Notify UMAC*/
17291 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17292
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294}/*WDI_ProcessSetUapsdAcParamsRsp*/
17295
17296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017297 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017299
17300 @param pWDICtx: pointer to the WLAN DAL context
17301 pEventData: pointer to the event information structure
17302
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 @see
17304 @return Result of the function call
17305*/
17306WDI_Status
17307WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017308(
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 WDI_ControlBlockType* pWDICtx,
17310 WDI_EventInfoType* pEventData
17311)
17312{
17313 WDI_Status wdiStatus;
17314 eHalStatus halStatus;
17315 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17317
17318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 -------------------------------------------------------------------------*/
17321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17322 ( NULL == pEventData->pEventData))
17323 {
17324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 }
17329
17330 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17331
17332 /*-------------------------------------------------------------------------
17333 Extract response and send it to UMAC
17334 -------------------------------------------------------------------------*/
17335 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017337
17338 /*Notify UMAC*/
17339 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17340
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342}/*WDI_ProcessUpdateUapsdParamsRsp*/
17343
17344/**
17345 @brief Process Configure RXP filter Rsp function (called when a
17346 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017347
17348 @param pWDICtx: pointer to the WLAN DAL context
17349 pEventData: pointer to the event information structure
17350
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 @see
17352 @return Result of the function call
17353*/
17354WDI_Status
17355WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017356(
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 WDI_ControlBlockType* pWDICtx,
17358 WDI_EventInfoType* pEventData
17359)
17360{
17361 WDI_Status wdiStatus;
17362 eHalStatus halStatus;
17363 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17365
17366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 -------------------------------------------------------------------------*/
17369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17370 ( NULL == pEventData->pEventData))
17371 {
17372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 }
17377
17378 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17379
17380 /*-------------------------------------------------------------------------
17381 Extract response and send it to UMAC
17382 -------------------------------------------------------------------------*/
17383 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017384 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017385
17386 /*Notify UMAC*/
17387 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17388
Jeff Johnsone7245742012-09-05 17:12:55 -070017389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017390}/*WDI_ProcessConfigureRxpFilterRsp*/
17391
17392/**
17393 @brief Process Set beacon filter Rsp function (called when a
17394 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017395
17396 @param pWDICtx: pointer to the WLAN DAL context
17397 pEventData: pointer to the event information structure
17398
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 @see
17400 @return Result of the function call
17401*/
17402WDI_Status
17403WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017404(
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 WDI_ControlBlockType* pWDICtx,
17406 WDI_EventInfoType* pEventData
17407)
17408{
17409 WDI_Status wdiStatus;
17410 eHalStatus halStatus;
17411 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17413
17414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 -------------------------------------------------------------------------*/
17417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17418 ( NULL == pEventData->pEventData))
17419 {
17420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 }
17425
17426 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17427
17428 /*-------------------------------------------------------------------------
17429 Extract response and send it to UMAC
17430 -------------------------------------------------------------------------*/
17431 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017433
17434 /*Notify UMAC*/
17435 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17436
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017438}/*WDI_ProcessSetBeaconFilterRsp*/
17439
17440/**
17441 @brief Process remove beacon filter Rsp function (called when a
17442 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017443
17444 @param pWDICtx: pointer to the WLAN DAL context
17445 pEventData: pointer to the event information structure
17446
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 @see
17448 @return Result of the function call
17449*/
17450WDI_Status
17451WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017452(
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 WDI_ControlBlockType* pWDICtx,
17454 WDI_EventInfoType* pEventData
17455)
17456{
17457 WDI_Status wdiStatus;
17458 eHalStatus halStatus;
17459 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17461
17462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 -------------------------------------------------------------------------*/
17465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17466 ( NULL == pEventData->pEventData))
17467 {
17468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 }
17473
17474 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17475
17476 /*-------------------------------------------------------------------------
17477 Extract response and send it to UMAC
17478 -------------------------------------------------------------------------*/
17479 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017481
17482 /*Notify UMAC*/
17483 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17484
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017486}/*WDI_ProcessRemBeaconFilterRsp*/
17487
17488/**
17489 @brief Process set RSSI thresholds Rsp function (called when a
17490 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017491
17492 @param pWDICtx: pointer to the WLAN DAL context
17493 pEventData: pointer to the event information structure
17494
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 @see
17496 @return Result of the function call
17497*/
17498WDI_Status
17499WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017500(
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 WDI_ControlBlockType* pWDICtx,
17502 WDI_EventInfoType* pEventData
17503)
17504{
17505 WDI_Status wdiStatus;
17506 eHalStatus halStatus;
17507 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17509
17510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 -------------------------------------------------------------------------*/
17513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17514 ( NULL == pEventData->pEventData))
17515 {
17516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 }
17521
17522 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17523
17524 /*-------------------------------------------------------------------------
17525 Extract response and send it to UMAC
17526 -------------------------------------------------------------------------*/
17527 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017529
17530 /*Notify UMAC*/
17531 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17532
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017534}/*WDI_ProcessSetRSSIThresoldsRsp*/
17535
17536/**
17537 @brief Process host offload Rsp function (called when a
17538 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017539
17540 @param pWDICtx: pointer to the WLAN DAL context
17541 pEventData: pointer to the event information structure
17542
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 @see
17544 @return Result of the function call
17545*/
17546WDI_Status
17547WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017548(
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 WDI_ControlBlockType* pWDICtx,
17550 WDI_EventInfoType* pEventData
17551)
17552{
17553 WDI_Status wdiStatus;
17554 eHalStatus halStatus;
17555 WDI_HostOffloadCb wdiHostOffloadCb;
17556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17557
17558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 -------------------------------------------------------------------------*/
17561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17562 ( NULL == pEventData->pEventData))
17563 {
17564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 }
17569
17570 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17571
17572 /*-------------------------------------------------------------------------
17573 Extract response and send it to UMAC
17574 -------------------------------------------------------------------------*/
17575 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017576 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017577
17578 /*Notify UMAC*/
17579 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17580
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017582}/*WDI_ProcessHostOffloadRsp*/
17583
17584/**
17585 @brief Process keep alive Rsp function (called when a
17586 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017587
17588 @param pWDICtx: pointer to the WLAN DAL context
17589 pEventData: pointer to the event information structure
17590
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 @see
17592 @return Result of the function call
17593*/
17594WDI_Status
17595WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017596(
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 WDI_ControlBlockType* pWDICtx,
17598 WDI_EventInfoType* pEventData
17599)
17600{
17601 WDI_Status wdiStatus;
17602 eHalStatus halStatus;
17603 WDI_KeepAliveCb wdiKeepAliveCb;
17604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17606 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17607
17608
17609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 }
17620
Jeff Johnsone7245742012-09-05 17:12:55 -070017621 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17622
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 /*-------------------------------------------------------------------------
17624 Extract response and send it to UMAC
17625 -------------------------------------------------------------------------*/
17626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 /*Notify UMAC*/
17630 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017633}/*WDI_ProcessKeepAliveRsp*/
17634
17635/**
17636 @brief Process wowl add ptrn Rsp function (called when a
17637 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017638
17639 @param pWDICtx: pointer to the WLAN DAL context
17640 pEventData: pointer to the event information structure
17641
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 @see
17643 @return Result of the function call
17644*/
17645WDI_Status
17646WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017647(
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 WDI_ControlBlockType* pWDICtx,
17649 WDI_EventInfoType* pEventData
17650)
17651{
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 eHalStatus halStatus;
17653 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017654 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
17655 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
17656
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17658
17659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 -------------------------------------------------------------------------*/
17662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17663 ( NULL == pEventData->pEventData))
17664 {
17665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 }
17670
17671 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
17672
17673 /*-------------------------------------------------------------------------
17674 Extract response and send it to UMAC
17675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017676 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17677 {
17678 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
17679 pEventData->pEventData,
17680 sizeof(halAddWowlBcastPtrRsp));
17681
17682 wdiWowlAddBcPtrRsp.wdiStatus =
17683 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
17684 }
17685 else
17686 {
17687 halStatus = *((eHalStatus*)pEventData->pEventData);
17688 wdiWowlAddBcPtrRsp.wdiStatus =
17689 WDI_HAL_2_WDI_STATUS(halStatus);
17690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017691
17692 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017693 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017694
Jeff Johnsone7245742012-09-05 17:12:55 -070017695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017696}/*WDI_ProcessWowlAddBcPtrnRsp*/
17697
17698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017701
17702 @param pWDICtx: pointer to the WLAN DAL context
17703 pEventData: pointer to the event information structure
17704
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 @see
17706 @return Result of the function call
17707*/
17708WDI_Status
17709WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017710(
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 WDI_ControlBlockType* pWDICtx,
17712 WDI_EventInfoType* pEventData
17713)
17714{
Jeff Johnson295189b2012-06-20 16:38:30 -070017715 eHalStatus halStatus;
17716 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017717 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
17718 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17720
17721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 -------------------------------------------------------------------------*/
17724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17725 ( NULL == pEventData->pEventData))
17726 {
17727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 }
17732
17733 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
17734
17735 /*-------------------------------------------------------------------------
17736 Extract response and send it to UMAC
17737 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017738 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17739 {
17740 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
17741 pEventData->pEventData,
17742 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017744 wdiWowlDelBcstPtrRsp.wdiStatus =
17745 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
17746 }
17747 else
17748 {
17749 halStatus = *((eHalStatus*)pEventData->pEventData);
17750 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17751 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017753 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756}/*WDI_ProcessWowlDelBcPtrnRsp*/
17757
17758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017761
17762 @param pWDICtx: pointer to the WLAN DAL context
17763 pEventData: pointer to the event information structure
17764
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 @see
17766 @return Result of the function call
17767*/
17768WDI_Status
17769WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017770(
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
Jeff Johnson295189b2012-06-20 16:38:30 -070017775 eHalStatus halStatus;
17776 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017777 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
17778 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17780
17781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 -------------------------------------------------------------------------*/
17784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17785 ( NULL == pEventData->pEventData))
17786 {
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 }
17792
17793 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
17794
17795 /*-------------------------------------------------------------------------
17796 Extract response and send it to UMAC
17797 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017798 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17799 {
17800 wpalMemoryCopy( &halEnterWowlRspParams,
17801 (wpt_uint8*)pEventData->pEventData,
17802 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017803
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017804 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
17805 wdiwowlEnterRsp.status =
17806 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
17807 }
17808 else
17809 {
17810 halStatus = *((eHalStatus*)pEventData->pEventData);
17811 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17812 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017814 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017815
Jeff Johnsone7245742012-09-05 17:12:55 -070017816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017817}/*WDI_ProcessWowlEnterRsp*/
17818
17819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017822
17823 @param pWDICtx: pointer to the WLAN DAL context
17824 pEventData: pointer to the event information structure
17825
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 @see
17827 @return Result of the function call
17828*/
17829WDI_Status
17830WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017831(
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 WDI_ControlBlockType* pWDICtx,
17833 WDI_EventInfoType* pEventData
17834)
17835{
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 eHalStatus halStatus;
17837 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017838 tHalExitWowlRspParams halExitWowlRspParams;
17839 WDI_WowlExitRspParamsType wdiWowlExitRsp;
17840
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17842
17843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 -------------------------------------------------------------------------*/
17846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17847 ( NULL == pEventData->pEventData))
17848 {
17849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 }
17854
17855 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
17856
17857 /*-------------------------------------------------------------------------
17858 Extract response and send it to UMAC
17859 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017860 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17861 {
17862 wpalMemoryCopy( &halExitWowlRspParams,
17863 pEventData->pEventData,
17864 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017865
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017866 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
17867 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
17868
17869 }
17870 else
17871 {
17872 halStatus = *((eHalStatus*)pEventData->pEventData);
17873 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
17874 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017876 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017877
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017879}/*WDI_ProcessWowlExitRsp*/
17880
17881/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 (called when a response is being received over the bus
17884 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017885
17886 @param pWDICtx: pointer to the WLAN DAL context
17887 pEventData: pointer to the event information structure
17888
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 @see
17890 @return Result of the function call
17891*/
17892WDI_Status
17893WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017894(
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_ControlBlockType* pWDICtx,
17896 WDI_EventInfoType* pEventData
17897)
17898{
17899 WDI_Status wdiStatus;
17900 eHalStatus halStatus;
17901 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
17902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17903
17904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 -------------------------------------------------------------------------*/
17907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17908 ( NULL == pEventData->pEventData))
17909 {
17910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017914 }
17915
17916 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
17917
17918 /*-------------------------------------------------------------------------
17919 Extract response and send it to UMAC
17920 -------------------------------------------------------------------------*/
17921 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017923
17924 /*Notify UMAC*/
17925 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
17926
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017928}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
17929
17930
17931/**
17932 @brief Process Nv download(called when a response
17933 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070017934
17935 @param pWDICtx: pointer to the WLAN DAL context
17936 pEventData: pointer to the event information structure
17937
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 @see
17939 @return Result of the function call
17940*/
17941WDI_Status
17942WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017943(
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 WDI_ControlBlockType* pWDICtx,
17945 WDI_EventInfoType* pEventData
17946)
17947{
17948
17949 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
17950 tHalNvImgDownloadRspParams halNvDownloadRsp;
17951 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
17952
17953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 -------------------------------------------------------------------------*/
17956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17957 ( NULL == pEventData->pEventData))
17958 {
17959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017963 }
17964
17965 /*-------------------------------------------------------------------------
17966 Extract response and send it to UMAC
17967 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017968 wpalMemoryCopy( &halNvDownloadRsp,
17969 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 sizeof(halNvDownloadRsp));
17971
17972 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
17973
17974 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
17976 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 {
17978 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017980 }
17981 else
17982 {
17983 /*Reset the Nv related global information in WDI context information */
17984 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
17985 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
17986 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
17987 /*call WDA callback function for last fragment */
17988 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
17989 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
17990 }
17991
Jeff Johnsone7245742012-09-05 17:12:55 -070017992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017993}
17994#ifdef WLAN_FEATURE_VOWIFI_11R
17995/**
17996 @brief Process Add TSpec Rsp function (called when a response
17997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017998
17999 @param pWDICtx: pointer to the WLAN DAL context
18000 pEventData: pointer to the event information structure
18001
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 @see
18003 @return Result of the function call
18004*/
18005WDI_Status
18006WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018007(
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 WDI_ControlBlockType* pWDICtx,
18009 WDI_EventInfoType* pEventData
18010)
18011{
18012 WDI_Status wdiStatus;
18013 tAggrAddTsRspParams aggrAddTsRsp;
18014 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18016
18017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 -------------------------------------------------------------------------*/
18020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18021 ( NULL == pEventData->pEventData))
18022 {
18023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 }
18028
18029 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18030
18031 /*-------------------------------------------------------------------------
18032 Extract response and send it to UMAC
18033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 wpalMemoryCopy( &aggrAddTsRsp,
18035 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 sizeof(aggrAddTsRsp));
18037
18038 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018040
18041 /*Notify UMAC*/
18042 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18043
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018045}/*WDI_ProcessAddTSpecRsp*/
18046#endif /* WLAN_FEATURE_VOWIFI_11R */
18047
18048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018049 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018051
18052 @param pWDICtx: pointer to the WLAN DAL context
18053 pEventData: pointer to the event information structure
18054
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 @see
18056 @return Result of the function call
18057*/
18058WDI_Status
18059WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018060(
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ControlBlockType* pWDICtx,
18062 WDI_EventInfoType* pEventData
18063)
18064{
18065 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18066 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18067 tHalHostResumeRspParams hostResumeRspMsg;
18068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18069
18070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 -------------------------------------------------------------------------*/
18073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18074 ( NULL == pEventData->pEventData))
18075 {
18076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 }
18081
18082 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18083
18084 /*-------------------------------------------------------------------------
18085 Extract response and send it to UMAC
18086 -------------------------------------------------------------------------*/
18087
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 (wpt_uint8*)pEventData->pEventData,
18090 sizeof(hostResumeRspMsg));
18091
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 wdiResumeRspParams.wdiStatus =
18093 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018094
18095 /*Notify UMAC*/
18096 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18097
18098 return WDI_STATUS_SUCCESS;
18099}
18100
18101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018104
18105 @param pWDICtx: pointer to the WLAN DAL context
18106 pEventData: pointer to the event information structure
18107
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 @see
18109 @return Result of the function call
18110*/
18111WDI_Status
18112WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018113(
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 WDI_ControlBlockType* pWDICtx,
18115 WDI_EventInfoType* pEventData
18116)
18117{
18118 WDI_Status wdiStatus;
18119 eHalStatus halStatus;
18120 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18122
18123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 -------------------------------------------------------------------------*/
18126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18127 ( NULL == pEventData->pEventData))
18128 {
18129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018134
18135 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018136
18137 /*-------------------------------------------------------------------------
18138 Extract response and send it to UMAC
18139 -------------------------------------------------------------------------*/
18140 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018142
18143 /*Notify UMAC*/
18144 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18145
Jeff Johnsone7245742012-09-05 17:12:55 -070018146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018147}/*WDI_ProcessSetTxPerTrackingRsp*/
18148
18149/*==========================================================================
18150 Indications from HAL
18151 ==========================================================================*/
18152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018153 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 indication of this kind is being received over the bus
18155 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018156
18157 @param pWDICtx: pointer to the WLAN DAL context
18158 pEventData: pointer to the event information structure
18159
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 @see
18161 @return Result of the function call
18162*/
18163WDI_Status
18164WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018165(
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 WDI_ControlBlockType* pWDICtx,
18167 WDI_EventInfoType* pEventData
18168)
18169{
18170 WDI_LowLevelIndType wdiInd;
18171 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18173
18174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 -------------------------------------------------------------------------*/
18177 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18178 ( NULL == pEventData->pEventData))
18179 {
18180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 }
18185
18186 /*-------------------------------------------------------------------------
18187 Extract indication and send it to UMAC
18188 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18190 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 sizeof(tHalRSSINotification));
18192
18193 /*Fill in the indication parameters*/
18194 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18195 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18196 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18197 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18198 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18199 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18200 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18201 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18202 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18203 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18204 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18205 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18206 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018207 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18208 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018209
18210 /*Notify UMAC*/
18211 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018212
18213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018214}/*WDI_ProcessLowRSSIInd*/
18215
18216
18217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 an indication of this kind is being received over the
18220 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018221
18222 @param pWDICtx: pointer to the WLAN DAL context
18223 pEventData: pointer to the event information structure
18224
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 @see
18226 @return Result of the function call
18227*/
18228WDI_Status
18229WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018230(
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 WDI_ControlBlockType* pWDICtx,
18232 WDI_EventInfoType* pEventData
18233)
18234{
18235 WDI_Status wdiStatus;
18236 eHalStatus halStatus;
18237 WDI_LowLevelIndType wdiInd;
18238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18239
18240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018242 -------------------------------------------------------------------------*/
18243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18244 ( NULL == pEventData->pEventData))
18245 {
18246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018250 }
18251
18252 /*-------------------------------------------------------------------------
18253 Extract indication and send it to UMAC
18254 -------------------------------------------------------------------------*/
18255 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18256 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018257 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018258
18259 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
18261
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 /*Notify UMAC*/
18263 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018264
18265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018266}/*WDI_ProcessMissedBeaconInd*/
18267
18268
18269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 an indication of this kind is being received over the
18272 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018273
18274 @param pWDICtx: pointer to the WLAN DAL context
18275 pEventData: pointer to the event information structure
18276
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 @see
18278 @return Result of the function call
18279*/
18280WDI_Status
18281WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018282(
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 WDI_ControlBlockType* pWDICtx,
18284 WDI_EventInfoType* pEventData
18285)
18286{
18287 WDI_Status wdiStatus;
18288 eHalStatus halStatus;
18289 WDI_LowLevelIndType wdiInd;
18290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18291
18292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 -------------------------------------------------------------------------*/
18295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18296 ( NULL == pEventData->pEventData))
18297 {
18298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 }
18303
18304 /*-------------------------------------------------------------------------
18305 Extract indication and send it to UMAC
18306 -------------------------------------------------------------------------*/
18307 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18308 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018310
18311 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018312 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 /* ! TO DO - fill in from HAL struct:
18314 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18315
18316 /*Notify UMAC*/
18317 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018318
18319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018320}/*WDI_ProcessUnkAddrFrameInd*/
18321
18322
18323/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018325 indication of this kind is being received over the bus
18326 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018327
18328 @param pWDICtx: pointer to the WLAN DAL context
18329 pEventData: pointer to the event information structure
18330
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 @see
18332 @return Result of the function call
18333*/
18334WDI_Status
18335WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018336(
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 WDI_ControlBlockType* pWDICtx,
18338 WDI_EventInfoType* pEventData
18339)
18340{
18341 WDI_LowLevelIndType wdiInd;
18342 tpSirMicFailureInd pHalMicFailureInd;
18343
18344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18345
18346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 -------------------------------------------------------------------------*/
18349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18350 ( NULL == pEventData->pEventData))
18351 {
18352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018357
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18359 /*-------------------------------------------------------------------------
18360 Extract indication and send it to UMAC
18361 -------------------------------------------------------------------------*/
18362
18363 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018364 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18366 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18367 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18368 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18369 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18370 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18371 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18372 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018373 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 pHalMicFailureInd->info.keyId;
18379 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18380 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18381 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18382 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
18383 /*Notify UMAC*/
18384 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018385
18386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018387}/*WDI_ProcessMicFailureInd*/
18388
18389
18390/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018391 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 an indication of this kind is being received over the
18393 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018394
18395 @param pWDICtx: pointer to the WLAN DAL context
18396 pEventData: pointer to the event information structure
18397
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 @see
18399 @return Result of the function call
18400*/
18401WDI_Status
18402WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018403(
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 WDI_ControlBlockType* pWDICtx,
18405 WDI_EventInfoType* pEventData
18406)
18407{
18408 WDI_Status wdiStatus;
18409 eHalStatus halStatus;
18410 WDI_LowLevelIndType wdiInd;
18411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18412
18413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 -------------------------------------------------------------------------*/
18416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18417 ( NULL == pEventData->pEventData))
18418 {
18419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 }
18424
18425 /*-------------------------------------------------------------------------
18426 Extract indication and send it to UMAC
18427 -------------------------------------------------------------------------*/
18428
18429 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18430 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018432
18433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18434 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018435
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018437 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18438 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018439
18440 /*Notify UMAC*/
18441 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018442
18443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018444}/*WDI_ProcessFatalErrorInd*/
18445
18446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 an indication of this kind is being received over the
18449 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018450
18451 @param pWDICtx: pointer to the WLAN DAL context
18452 pEventData: pointer to the event information structure
18453
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 @see
18455 @return Result of the function call
18456*/
18457WDI_Status
18458WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018459(
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 WDI_ControlBlockType* pWDICtx,
18461 WDI_EventInfoType* pEventData
18462)
18463{
18464 tDeleteStaContextParams halDelSTACtx;
18465 WDI_LowLevelIndType wdiInd;
18466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18467
18468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018470 -------------------------------------------------------------------------*/
18471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18472 ( NULL == pEventData->pEventData))
18473 {
18474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 }
18479
18480 /*-------------------------------------------------------------------------
18481 Extract indication and send it to UMAC
18482 -------------------------------------------------------------------------*/
18483
18484 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 wpalMemoryCopy( &halDelSTACtx,
18486 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 sizeof(halDelSTACtx));
18488
18489 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491
18492 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18493 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18494 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18495 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18496
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018501 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18502 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018503
18504 /*Notify UMAC*/
18505 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018506
18507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018508}/*WDI_ProcessDelSTAInd*/
18509
18510/**
18511*@brief Process Coex Indication function (called when
18512 an indication of this kind is being received over the
18513 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018514
18515 @param pWDICtx: pointer to the WLAN DAL context
18516 pEventData: pointer to the event information structure
18517
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 @see
18519 @return Result of the function call
18520*/
18521WDI_Status
18522WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018523(
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ControlBlockType* pWDICtx,
18525 WDI_EventInfoType* pEventData
18526)
18527{
18528 WDI_LowLevelIndType wdiInd;
18529 tCoexIndMsg halCoexIndMsg;
18530 wpt_uint32 index;
18531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18532
18533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 -------------------------------------------------------------------------*/
18536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18537 ( NULL == pEventData->pEventData ))
18538 {
18539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 }
18544
18545 /*-------------------------------------------------------------------------
18546 Extract indication and send it to UMAC
18547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18549 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 sizeof(halCoexIndMsg.coexIndParams) );
18551
18552 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 wdiInd.wdiIndicationType = WDI_COEX_IND;
18554 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018555 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18556 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 }
18559
18560 // DEBUG
18561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18562 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18564 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18565 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18566 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18567 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018568
18569 /*Notify UMAC*/
18570 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018571
18572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573}/*WDI_ProcessCoexInd*/
18574
18575/**
18576*@brief Process Tx Complete Indication function (called when
18577 an indication of this kind is being received over the
18578 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018579
18580 @param pWDICtx: pointer to the WLAN DAL context
18581 pEventData: pointer to the event information structure
18582
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 @see
18584 @return Result of the function call
18585*/
18586WDI_Status
18587WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018588(
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 WDI_ControlBlockType* pWDICtx,
18590 WDI_EventInfoType* pEventData
18591)
18592{
18593 WDI_LowLevelIndType wdiInd;
18594 tTxComplIndMsg halTxComplIndMsg;
18595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18596
18597 /*-------------------------------------------------------------------------
18598 Sanity check
18599 -------------------------------------------------------------------------*/
18600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18601 ( NULL == pEventData->pEventData ))
18602 {
18603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 WDI_ASSERT( 0 );
18606 return WDI_STATUS_E_FAILURE;
18607 }
18608
18609 /*-------------------------------------------------------------------------
18610 Extract indication and send it to UMAC
18611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018612 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
18613 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 sizeof(halTxComplIndMsg.txComplParams) );
18615
18616 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
18618 wdiInd.wdiIndicationData.tx_complete_status
18619 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070018620
18621 /*Notify UMAC*/
18622 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070018623
18624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018625}/*WDI_ProcessTxCompleteInd*/
18626
18627#ifdef WLAN_FEATURE_P2P
18628/**
Viral Modi9dc288a2012-12-10 13:09:21 -080018629*@brief Process Noa Start Indication function (called when
18630 an indication of this kind is being received over the
18631 bus from HAL)
18632
18633 @param pWDICtx: pointer to the WLAN DAL context
18634 pEventData: pointer to the event information structure
18635
18636 @see
18637 @return Result of the function call
18638*/
18639WDI_Status
18640WDI_ProcessP2pNoaStartInd
18641(
18642 WDI_ControlBlockType* pWDICtx,
18643 WDI_EventInfoType* pEventData
18644)
18645{
18646 WDI_LowLevelIndType wdiInd;
18647 tNoaStartIndMsg halNoaStartIndMsg;
18648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18649
18650 /*-------------------------------------------------------------------------
18651 Sanity check
18652 -------------------------------------------------------------------------*/
18653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18654 ( NULL == pEventData->pEventData ))
18655 {
18656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18657 "%s: Invalid parameters", __func__);
18658 WDI_ASSERT( 0 );
18659 return WDI_STATUS_E_FAILURE;
18660 }
18661
18662 /*-------------------------------------------------------------------------
18663 Extract indication and send it to UMAC
18664 -------------------------------------------------------------------------*/
18665 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
18666 pEventData->pEventData,
18667 sizeof(halNoaStartIndMsg.noaStartIndParams) );
18668
18669 /*Fill in the indication parameters*/
18670 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
18671
18672 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
18673 = halNoaStartIndMsg.noaStartIndParams.status;
18674
18675 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
18676 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
18677
18678 /*Notify UMAC*/
18679 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18680
18681 return WDI_STATUS_SUCCESS;
18682}/*WDI_ProcessNoaAttrInd*/
18683
18684/**
Jeff Johnson295189b2012-06-20 16:38:30 -070018685*@brief Process Noa Attr Indication function (called when
18686 an indication of this kind is being received over the
18687 bus from HAL)
18688
18689 @param pWDICtx: pointer to the WLAN DAL context
18690 pEventData: pointer to the event information structure
18691
18692 @see
18693 @return Result of the function call
18694*/
18695WDI_Status
18696WDI_ProcessP2pNoaAttrInd
18697(
18698 WDI_ControlBlockType* pWDICtx,
18699 WDI_EventInfoType* pEventData
18700)
18701{
18702 WDI_LowLevelIndType wdiInd;
18703 tNoaAttrIndMsg halNoaAttrIndMsg;
18704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18705
18706 /*-------------------------------------------------------------------------
18707 Sanity check
18708 -------------------------------------------------------------------------*/
18709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18710 ( NULL == pEventData->pEventData ))
18711 {
18712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 WDI_ASSERT( 0 );
18715 return WDI_STATUS_E_FAILURE;
18716 }
18717
18718 /*-------------------------------------------------------------------------
18719 Extract indication and send it to UMAC
18720 -------------------------------------------------------------------------*/
18721 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
18722 pEventData->pEventData,
18723 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
18724
18725 /*Fill in the indication parameters*/
18726 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070018727
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
18729 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070018730
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
18732 = halNoaAttrIndMsg.noaAttrIndParams.index;
18733 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
18734 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
18735 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
18736 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070018737
Jeff Johnson295189b2012-06-20 16:38:30 -070018738 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
18739 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
18740 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
18741 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
18742 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
18743 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
18744 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
18745 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070018746
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
18748 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
18749 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
18750 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
18751 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
18752 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
18753 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
18754 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
18755
18756 /*Notify UMAC*/
18757 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18758
18759 return WDI_STATUS_SUCCESS;
18760}/*WDI_ProcessNoaAttrInd*/
18761#endif
18762
18763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 an indication of this kind is being received over the
18766 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018767
18768 @param pWDICtx: pointer to the WLAN DAL context
18769 pEventData: pointer to the event information structure
18770
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 @see
18772 @return Result of the function call
18773*/
18774WDI_Status
18775WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018776(
Jeff Johnson295189b2012-06-20 16:38:30 -070018777 WDI_ControlBlockType* pWDICtx,
18778 WDI_EventInfoType* pEventData
18779)
18780{
18781 WDI_LowLevelIndType wdiInd;
18782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070018783
Jeff Johnson295189b2012-06-20 16:38:30 -070018784 /*-------------------------------------------------------------------------
18785 Extract indication and send it to UMAC
18786 -------------------------------------------------------------------------*/
18787 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018788 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
18789
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 /*Notify UMAC*/
18791 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18792
Jeff Johnsone7245742012-09-05 17:12:55 -070018793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018794}/*WDI_ProcessTxPerHitInd*/
18795
18796#ifdef ANI_MANF_DIAG
18797/**
18798 @brief WDI_ProcessFTMCommandReq
18799 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018800
18801 @param pWDICtx: pointer to the WLAN DAL context
18802 pEventData: pointer to the event information structure
18803
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 @see
18805 @return Result of the function call
18806*/
18807WDI_Status
18808WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018809(
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 WDI_ControlBlockType* pWDICtx,
18811 WDI_EventInfoType* pEventData
18812)
18813{
18814 WDI_FTMCommandReqType *ftmCommandReq = NULL;
18815 wpt_uint8 *ftmCommandBuffer = NULL;
18816 wpt_uint16 dataOffset;
18817 wpt_uint16 bufferSize;
18818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 -------------------------------------------------------------------------*/
18821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18822 ( NULL == pEventData->pEventData))
18823
18824 {
18825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 }
18830
18831 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
18832
18833 /* Get MSG Buffer */
18834 WDI_GetMessageBuffer(pWDICtx,
18835 WDI_FTM_CMD_REQ,
18836 ftmCommandReq->bodyLength,
18837 &ftmCommandBuffer,
18838 &dataOffset,
18839 &bufferSize);
18840
18841 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
18842 ftmCommandReq->FTMCommandBody,
18843 ftmCommandReq->bodyLength);
18844
18845 /* Send MSG */
18846 return WDI_SendMsg(pWDICtx,
18847 ftmCommandBuffer,
18848 bufferSize,
18849 pEventData->pCBfnc,
18850 pEventData->pUserData,
18851 WDI_FTM_CMD_RESP);
18852}
18853
18854/**
18855 @brief WDI_ProcessFTMCommandRsp
18856 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070018857
18858 @param pWDICtx: pointer to the WLAN DAL context
18859 pEventData: pointer to the event information structure
18860
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 @see
18862 @return Result of the function call
18863*/
18864WDI_Status
18865WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018866(
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 WDI_ControlBlockType* pWDICtx,
18868 WDI_EventInfoType* pEventData
18869)
18870{
18871 WDI_FTMCommandRspCb ftmCMDRspCb;
18872 tProcessPttRspParams *ftmCMDRspData = NULL;
18873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18874
18875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 -------------------------------------------------------------------------*/
18878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18879 ( NULL == pEventData->pEventData))
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 }
18886
18887 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
18888
18889 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
18890
Jeff Johnsone7245742012-09-05 17:12:55 -070018891 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
18892 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
18894
18895 /*Notify UMAC*/
18896 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
18897
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018899}
18900#endif /* ANI_MANF_DIAG */
18901/**
18902 @brief WDI_ProcessHalDumpCmdReq
18903 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070018904
18905 @param pWDICtx: pointer to the WLAN DAL context
18906 pEventData: pointer to the event information structure
18907
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 @see
18909 @return Result of the function call
18910*/
18911WDI_Status
18912WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070018913(
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 WDI_ControlBlockType* pWDICtx,
18915 WDI_EventInfoType* pEventData
18916)
18917{
18918 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
18919 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
18920 wpt_uint16 usDataOffset = 0;
18921 wpt_uint16 usSendSize = 0;
18922 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924
18925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 -------------------------------------------------------------------------*/
18928 if (( NULL == pEventData ) ||
18929 ( NULL == pEventData->pEventData) ||
18930 ( NULL == pEventData->pCBfnc ))
18931 {
18932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 }
18937
18938 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
18939 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
18940
18941 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018942 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018943 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018947 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070018950 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070018952
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 /*-----------------------------------------------------------------------
18954 Get message buffer
18955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
18958 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
18961 {
18962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18963 "Unable to get send buffer in HAL Dump Command req %x %x %x",
18964 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
18965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 }
18968
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 wpalMemoryCopy( pSendBuffer+usDataOffset,
18970 &halDumpCmdReqMsg.dumpCmdReqParams,
18971 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018972
18973 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018975
18976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
18980 wdiHALDumpCmdRspCb, pEventData->pUserData,
18981 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070018982}
18983
18984/**
18985 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 Process hal Dump Command Response from HAL, simply route to HDD
18987
18988 @param pWDICtx: pointer to the WLAN DAL context
18989 pEventData: pointer to the event information structure
18990
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 @see
18992 @return Result of the function call
18993*/
18994WDI_Status
18995WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018996(
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 WDI_ControlBlockType* pWDICtx,
18998 WDI_EventInfoType* pEventData
18999)
19000{
19001 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
19002 tpHalDumpCmdRspParams halDumpCmdRspParams;
19003 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19004
19005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 -------------------------------------------------------------------------*/
19008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19009 ( NULL == pEventData->pEventData))
19010 {
19011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 }
19016
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019018
19019 /*Initialize the WDI Response structure */
19020 wdiHALDumpCmdRsp.usBufferLen = 0;
19021 wdiHALDumpCmdRsp.pBuffer = NULL;
19022
19023 halDumpCmdRspParams = (tHalDumpCmdRspParams *)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019024
19025 wdiHALDumpCmdRsp.wdiStatus =
19026 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams->status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019027
19028 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
19029 (halDumpCmdRspParams->rspLength != 0))
19030 {
19031 /* Copy the response data */
19032 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams->rspLength;
19033 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams->rspLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 wpalMemoryCopy( &halDumpCmdRspParams->rspBuffer,
19035 wdiHALDumpCmdRsp.pBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19037 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019038
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 /*Notify UMAC*/
19040 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19041
19042 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19043 {
19044 /* Free the allocated buffer */
19045 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19046 }
19047 return WDI_STATUS_SUCCESS;
19048}
19049
19050/*==========================================================================
19051 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019052
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019055==========================================================================*/
19056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 when it wishes to send up a notification like the ones
19059 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019060
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019062
19063 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 wctsNotifyCBData: the callback data of the user
19066
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019068
19069 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019070*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019071void
Jeff Johnson295189b2012-06-20 16:38:30 -070019072WDI_NotifyMsgCTSCB
19073(
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 WCTS_NotifyEventType wctsEvent,
19076 void* wctsNotifyCBData
19077)
19078{
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19081
19082 if (NULL == pWDICtx )
19083 {
19084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019088 }
19089
19090 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19091 {
19092 /* callback presumably occurred after close */
19093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019094 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 }
19097
19098 if ( WCTS_EVENT_OPEN == wctsEvent )
19099 {
19100 /*Flag must be set atomically as it is checked from incoming request
19101 functions*/
19102 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019104
19105 /*Nothing to do - so try to dequeue any pending request that may have
19106 occurred while we were trying to establish this*/
19107 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 {
19112 /*Flag must be set atomically as it is checked from incoming request
19113 functions*/
19114 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019116
19117 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019118 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 wpalMutexRelease(&pWDICtx->wptMutex);
19120
19121 /*Notify that the Control Channel is closed */
19122 wpalEventSet(&pWDICtx->wctsActionEvent);
19123 }
19124
19125}/*WDI_NotifyMsgCTSCB*/
19126
19127
19128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 when it wishes to send up a packet received over the
19131 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019132
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019134
19135 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 pMsg: the packet
19137 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 wctsRxMsgCBData: the callback data of the user
19139
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019141
19142 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019144void
19145WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019146(
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 void* pMsg,
19149 wpt_uint32 uLen,
19150 void* wctsRxMsgCBData
19151)
19152{
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 tHalMsgHeader *pHalMsgHeader;
19154 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19157
19158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 ( uLen < sizeof(tHalMsgHeader)))
19163 {
19164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 }
19169
19170 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19171 {
19172 /* callback presumably occurred after close */
19173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019174 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 }
19177
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019179 context - so no serialization is necessary here
19180 ! - revisit this assumption */
19181
19182 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19183
19184 if ( uLen != pHalMsgHeader->msgLen )
19185 {
19186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19187 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19189 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 }
19191
19192 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19193
19194 /*The message itself starts after the header*/
19195 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19196 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19197 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19198 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19199
19200
19201 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19202 {
19203 /*Stop the timer as the response was received */
19204 /*!UT - check for potential race conditions between stop and response */
19205 wpalTimerStop(&pWDICtx->wptResponseTimer);
19206 }
19207 /* Check if we receive a response message which is not expected */
19208 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19209 {
19210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19211 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19212 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019213 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019214 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19215 pWDICtx->wdiExpectedResponse);
19216 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19217 return;
19218 }
19219
19220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19221 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19222
19223 /*Post response event to the state machine*/
19224 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19225
19226}/*WDI_RXMsgCTSCB*/
19227
19228
19229/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019231========================================================================*/
19232
19233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019236
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 @param pWDICtx - pointer to the control block
19238
19239 @return Result of the function call
19240*/
19241WPT_INLINE WDI_Status
19242WDI_CleanCB
19243(
19244 WDI_ControlBlockType* pWDICtx
19245)
19246{
19247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19248
19249 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019250 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019251
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19254 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19255
19256 WDI_ResetAssocSessions( pWDICtx );
19257
19258 return WDI_STATUS_SUCCESS;
19259}/*WDI_CleanCB*/
19260
19261
19262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019264
Jeff Johnsone7245742012-09-05 17:12:55 -070019265
19266 @param pWDICtx: pointer to the WLAN DAL context
19267 pEventData: pointer to the event information structure
19268
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 @see
19270 @return Result of the function call
19271*/
19272WPT_INLINE WDI_Status
19273WDI_ProcessRequest
19274(
19275 WDI_ControlBlockType* pWDICtx,
19276 WDI_EventInfoType* pEventData
19277)
19278{
19279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19280
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 already checked these pointers*/
19283
19284 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19285 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019286 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19288 "Calling request processing function for req %s (%d) %x",
19289 WDI_getReqMsgString(pEventData->wdiRequest),
19290 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19291 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19292 }
19293 else
19294 {
19295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019296 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 pEventData->wdiRequest);
19298 return WDI_STATUS_E_NOT_IMPLEMENT;
19299 }
19300}/*WDI_ProcessRequest*/
19301
19302
19303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 prefixes it with a send message header
19307
19308 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 wdiReqType: type of the request being sent
19310 uBufferLen: message buffer len
19311 pMsgBuffer: resulting allocated buffer
19312 pusDataOffset: offset in the buffer where the caller
19313 can start copying its message data
19314 puBufferSize: the resulting buffer size (offset+buff
19315 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019316
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 @see
19318 @return Result of the function call
19319*/
19320WDI_Status
19321WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019322(
19323 WDI_ControlBlockType* pWDICtx,
19324 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 wpt_uint8** pMsgBuffer,
19327 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 wpt_uint16* pusBufferSize
19329)
19330{
19331 tHalMsgHeader halMsgHeader;
19332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19333
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 again*/
19336
19337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019338 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019340 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19342 if ( NULL == *pMsgBuffer )
19343 {
19344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19345 "Unable to allocate message buffer for req %s (%d)",
19346 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019347 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019349 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 }
19351
19352 /*-------------------------------------------------------------------------
19353 Fill in the message header
19354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019355 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19356 /* Fill msgVersion */
19357#ifdef WLAN_FEATURE_11AC
19358 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019359 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019360 else
19361#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019362 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019363
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19365 *pusDataOffset = sizeof(halMsgHeader);
19366 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19367
19368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019369}/*WDI_GetMessageBuffer*/
19370
19371
19372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 the CB
19376
19377 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019379
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 usSendSize size of the buffer to be sent
19381 pRspCb: response callback - save in the WDI
19382 CB
19383 pUserData: user data associated with the
19384 callback
19385 wdiExpectedResponse: the code of the response that is
19386 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019387
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 @see
19389 @return Result of the function call
19390*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019392WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019393(
19394 WDI_ControlBlockType* pWDICtx,
19395 wpt_uint8* pSendBuffer,
19396 wpt_uint32 usSendSize,
19397 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 void* pUserData,
19399 WDI_ResponseEnumType wdiExpectedResponse
19400)
19401{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019402 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019403 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19405
19406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019407 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019408 ------------------------------------------------------------------------*/
19409 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 pWDICtx->pfncRspCB = pRspCb;
19411 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019412
19413 /*-----------------------------------------------------------------------
19414 Call the CTS to send this message over - free message afterwards
19415 - notify transport failure
19416 Note: CTS is reponsible for freeing the message buffer.
19417 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019418 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19419 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19420 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 "Failed to send message over the bus - catastrophic failure");
19424
Jeff Johnsond13512a2012-07-17 11:42:19 -070019425 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019427 else
19428 {
19429 /* even when message was placed in CTS deferred Q, we will treat it
19430 success but log this info
19431 */
19432 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19433 {
19434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19435 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19436 "response %s (%d)",
19437 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19438 pWDICtx->wdiExpectedResponse);
19439 VOS_ASSERT(0);
19440 }
19441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019442
Jeff Johnsond13512a2012-07-17 11:42:19 -070019443 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 if ( NULL != pWDICtx->wdiReqStatusCB )
19445 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019446 /*Inform originator whether request went through or not*/
19447 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19448 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 pWDICtx->wdiReqStatusCB = NULL;
19450 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019451 callback(wdiStatus, callbackContext);
19452
19453 /*For WDI requests which have registered a request callback,
19454 inform the WDA caller of the same via setting the return value
19455 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19456 end up repeating the functonality in the req callback for the
19457 WDI_STATUS_E_FAILURE case*/
19458 if (wdiStatus == WDI_STATUS_E_FAILURE)
19459 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 }
19461
Jeff Johnsond13512a2012-07-17 11:42:19 -070019462 if ( wdiStatus == WDI_STATUS_SUCCESS )
19463 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 /*Start timer for the expected response */
19465 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019466
19467 /*cache current timestamp for debugging */
19468 pWDICtx->uTimeStampRspTmrStart = vos_timer_get_system_time();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019469 }
19470 else
19471 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019472 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019473 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19474 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019475
Jeff Johnsond13512a2012-07-17 11:42:19 -070019476 return wdiStatus;
19477
Jeff Johnson295189b2012-06-20 16:38:30 -070019478}/*WDI_SendMsg*/
19479
19480
19481
19482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 the bus using the control transport and saves some info
19485 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019486
19487 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 pSendBuffer: buffer to be sent
19489 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019490
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 @see
19492 @return Result of the function call
19493*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019494WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019495WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019496(
19497 WDI_ControlBlockType* pWDICtx,
19498 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 wpt_uint32 usSendSize
19500)
19501{
19502 wpt_uint32 uStatus ;
19503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19504
19505 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019507 Note: CTS is reponsible for freeing the message buffer.
19508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 (void*)pSendBuffer, usSendSize );
19511
19512 /*Inform Upper MAC about the outcome of the request*/
19513 if ( NULL != pWDICtx->wdiReqStatusCB )
19514 {
19515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19516 "Send indication status : %d", uStatus);
19517
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019518 /* even if CTS placed indication into its deferred Q, we treat it
19519 * as success and let CTS drain its queue as per smd interrupt to CTS
19520 */
19521 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 -070019522 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 }
19524
19525 /*If sending of the message failed - it is considered catastrophic and
19526 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019527 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19528 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19529
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 {
19531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019533
19534 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19535 return WDI_STATUS_E_FAILURE;
19536 }
19537
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019539}/*WDI_SendIndication*/
19540
19541
19542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 @brief WDI_DetectedDeviceError - called internally by DAL when
19544 it has detected a failure in the device
19545
19546 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 usErrorCode: error code detected by WDI or received
19548 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019549
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019552*/
19553void
19554WDI_DetectedDeviceError
19555(
19556 WDI_ControlBlockType* pWDICtx,
19557 wpt_uint16 usErrorCode
19558)
19559{
19560 WDI_LowLevelIndType wdiInd;
19561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19562
19563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19564 "Device Error detected code: %d - transitioning to stopped state",
19565 usErrorCode);
19566
19567 wpalMutexAcquire(&pWDICtx->wptMutex);
19568
19569 WDI_STATableStop(pWDICtx);
19570
19571 WDI_ResetAssocSessions(pWDICtx);
19572
19573 /*Set the expected state transition to stopped - because the device
19574 experienced a failure*/
19575 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19576
19577 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019579
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019581
19582 /*TO DO: - there should be an attempt to reset the device here*/
19583
19584 wpalMutexRelease(&pWDICtx->wptMutex);
19585
19586 /*------------------------------------------------------------------------
19587 Notify UMAC if a handler is registered
19588 ------------------------------------------------------------------------*/
19589 if (pWDICtx->wdiLowLevelIndCB)
19590 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19592 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019593
19594 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19595 }
19596}/*WDI_DetectedDeviceError*/
19597
19598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019599 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019600 we started on send message has expire - this should
19601 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019602 reply - trigger catastrophic failure
19603 @param
19604
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070019606
19607 @see
19608 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019609*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019610void
Jeff Johnson295189b2012-06-20 16:38:30 -070019611WDI_ResponseTimerCB
19612(
19613 void *pUserData
19614)
19615{
19616 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
19617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19618
19619 if (NULL == pWDICtx )
19620 {
19621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 }
19626
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019627 /*cache current timestamp for debugging */
19628 pWDICtx->uTimeStampRspTmrExp = vos_timer_get_system_time();
19629
19630 /* If response timer is running at this time that means this timer
19631 * event is not for the last request but rather last-to-last request and
19632 * this timer event has come after we recevied respone for last-to-last
19633 * message
19634 */
19635 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
19636 {
19637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19638 "WDI_ResponseTimerCB: timer in running state on timer event, "
19639 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19640 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
19641 return;
19642 }
19643
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
19645 {
19646
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053019647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019649 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019651 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19652 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 /* WDI timeout means Riva is not responding or SMD communication to Riva
19654 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019655 * is to initiate SSR from APPS
19656 * There is also an option to re-enable wifi, which will eventually
19657 * trigger SSR
19658 */
19659#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070019660 wpalWcnssResetIntr();
19661 /* if this timer fires, it means Riva did not receive the FIQ */
19662 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070019663#else
19664 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19665 wpalWlanReload();
19666#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019667 }
19668 else
19669 {
19670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019671 "Timeout occurred but not waiting for any response %d "
19672 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
19673 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
19674 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 }
19676
19677 return;
19678
19679}/*WDI_ResponseTimerCB*/
19680
19681
19682/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019683 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019684
Jeff Johnsone7245742012-09-05 17:12:55 -070019685
19686 @param pWDICtx: pointer to the WLAN DAL context
19687 pEventData: pointer to the event information structure
19688
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 @see
19690 @return Result of the function call
19691*/
19692WPT_INLINE WDI_Status
19693WDI_ProcessResponse
19694(
19695 WDI_ControlBlockType* pWDICtx,
19696 WDI_EventInfoType* pEventData
19697)
19698{
19699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19700
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 already checked these pointers
19703 ! - revisit this assumption */
19704 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
19705 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_getRespMsgString(pEventData->wdiResponse),
19710 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
19711 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
19712 }
19713 else
19714 {
19715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 pEventData->wdiResponse);
19718 return WDI_STATUS_E_NOT_IMPLEMENT;
19719 }
19720}/*WDI_ProcessResponse*/
19721
19722
19723/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019724 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070019725=========================================================================*/
19726
19727/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 @brief Utility function used by the DAL Core to help queue a
19729 request that cannot be processed right away.
19730 @param
19731
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 pWDICtx: - pointer to the WDI control block
19733 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019734 queued
19735
19736 @see
19737 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019738*/
19739WDI_Status
19740WDI_QueuePendingReq
19741(
19742 WDI_ControlBlockType* pWDICtx,
19743 WDI_EventInfoType* pEventData
19744)
19745{
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19750
19751 if ( NULL == pEventDataQueue )
19752 {
19753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019754 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070019755 WDI_ASSERT(0);
19756 return WDI_STATUS_MEM_FAILURE;
19757 }
19758
19759 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
19760 pEventDataQueue->pUserData = pEventData->pUserData;
19761 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
19762 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764
19765 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
19766 {
19767 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019768
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 if ( NULL == pEventInfo )
19770 {
19771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ASSERT(0);
19774 wpalMemoryFree(pEventDataQueue);
19775 return WDI_STATUS_MEM_FAILURE;
19776 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019777
Jeff Johnson295189b2012-06-20 16:38:30 -070019778 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
19779
19780 }
19781 pEventDataQueue->pEventData = pEventInfo;
19782
19783 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070019785
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019787
19788 return WDI_STATUS_SUCCESS;
19789}/*WDI_QueuePendingReq*/
19790
19791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070019794 @param
19795
19796 pMsg - pointer to the message
19797
19798 @see
19799 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019800*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019801void
Jeff Johnson295189b2012-06-20 16:38:30 -070019802WDI_PALCtrlMsgCB
19803(
19804 wpt_msg *pMsg
19805)
19806{
19807 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019808 WDI_ControlBlockType* pWDICtx = NULL;
19809 WDI_Status wdiStatus;
19810 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 void* pUserData;
19812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19813
19814 if (( NULL == pMsg )||
19815 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
19816 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
19817 {
19818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019819 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070019820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019822 }
19823
19824 /*Transition back to the state that we had before serialization
19825 - serialization transitions us to BUSY to stop any incomming requests
19826 ! TO DO L: possible race condition here if a request comes in between the
19827 state transition and the post function*/
19828
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070019830
19831 /*-----------------------------------------------------------------------
19832 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070019833 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 -----------------------------------------------------------------------*/
19835 switch ( pEventData->wdiRequest )
19836 {
19837
Jeff Johnsone7245742012-09-05 17:12:55 -070019838 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
19840 break;
19841
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 case WDI_NV_DOWNLOAD_REQ:
19843 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
19844 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
19845 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
19846 {
19847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019848 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19850 }
19851 else
19852 {
19853 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
19854 }
19855
19856 break;
19857
19858 default:
19859 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
19860 break;
19861 }/*switch ( pEventData->wdiRequest )*/
19862
19863 if ( WDI_STATUS_SUCCESS != wdiStatus )
19864 {
19865 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
19866
19867 if ( NULL != pfnReqStatusCB )
19868 {
19869 /*Fail the request*/
19870 pfnReqStatusCB( wdiStatus, pUserData);
19871 }
19872 }
19873
19874 /* Free data - that was allocated when queueing*/
19875 if( pEventData != NULL )
19876 {
19877 if( pEventData->pEventData != NULL )
19878 {
19879 wpalMemoryFree(pEventData->pEventData);
19880 }
19881 wpalMemoryFree(pEventData);
19882 }
19883
19884 if( pMsg != NULL )
19885 {
19886 wpalMemoryFree(pMsg);
19887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
Jeff Johnson295189b2012-06-20 16:38:30 -070019889}/*WDI_PALCtrlMsgCB*/
19890
19891/**
19892 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070019893 and schedule for execution a pending request
19894 @param
19895
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 pWDICtx: - pointer to the WDI control block
19897 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070019898 queued
19899
19900 @see
19901 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019902*/
19903WDI_Status
19904WDI_DequeuePendingReq
19905(
19906 WDI_ControlBlockType* pWDICtx
19907)
19908{
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019911 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19913
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915
19916 if ( NULL == pNode )
19917 {
19918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 return WDI_STATUS_SUCCESS;
19921 }
19922
19923 /*The node actually points to the 1st element inside the Event Data struct -
19924 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019926
19927 /*Serialize processing in the control thread
19928 !TO DO: - check to see if these are all the messages params that need
19929 to be filled in*/
19930 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
19931
19932 if ( NULL == palMsg )
19933 {
19934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 palMsg->callback = WDI_PALCtrlMsgCB;
19941 palMsg->ptr = pEventData;
19942
19943 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 palMsg->val = pWDICtx->uGlobalState;
19945
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 /*Transition back to BUSY as we need to handle a queued request*/
19947 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070019948
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
19950
19951 return WDI_STATUS_PENDING;
19952}/*WDI_DequeuePendingReq*/
19953
19954
19955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 away.- The assoc requests will be queued by BSSID
19959 @param
19960
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 pWDICtx: - pointer to the WDI control block
19962 pEventData: pointer to the evnt info that needs to be queued
19963 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070019964
19965 @see
19966 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070019967*/
19968WDI_Status
19969WDI_QueueNewAssocRequest
19970(
19971 WDI_ControlBlockType* pWDICtx,
19972 WDI_EventInfoType* pEventData,
19973 wpt_macAddr macBSSID
19974)
19975{
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 wpt_uint8 i;
19977 WDI_BSSSessionType* pSession = NULL;
19978 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 void* pEventInfo;
19981 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070019983
Jeff Johnsone7245742012-09-05 17:12:55 -070019984
19985 /*------------------------------------------------------------------------
19986 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 ------------------------------------------------------------------------*/
19988 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
19989 {
19990 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
19991 {
19992 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 pSession = &pWDICtx->aBSSSessions[i];
19994 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 }
19996 }
19997
19998 if ( i >= WDI_MAX_BSS_SESSIONS )
19999 {
20000 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020003
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 /*------------------------------------------------------------------------
20005 Fill in the BSSID for this session and set the usage flag
20006 ------------------------------------------------------------------------*/
20007 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020009
20010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 ------------------------------------------------------------------------*/
20013 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20014 if ( NULL == pEventDataQueue )
20015 {
20016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020017 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ASSERT(0);
20019 return WDI_STATUS_MEM_FAILURE;
20020 }
20021
20022 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20023 if ( NULL == pSessionIdElement )
20024 {
20025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020026 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 WDI_ASSERT(0);
20028 wpalMemoryFree(pEventDataQueue);
20029 return WDI_STATUS_MEM_FAILURE;
20030 }
20031
20032 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20033 if ( NULL == pEventInfo )
20034 {
20035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020036 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 WDI_ASSERT(0);
20038 wpalMemoryFree(pSessionIdElement);
20039 wpalMemoryFree(pEventDataQueue);
20040 return WDI_STATUS_MEM_FAILURE;
20041 }
20042
20043 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20044 pEventDataQueue->pUserData = pEventData->pUserData;
20045 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20046 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020047 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020048
20049 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20050 pEventDataQueue->pEventData = pEventInfo;
20051
20052 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020054
20055 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020056 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020057
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020059
20060 /*We need to maintain a separate list that keeps track of the order in which
20061 the new assoc requests are being queued such that we can start processing
20062 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020063 pSessionIdElement->ucIndex = i;
20064 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020065
20066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20067 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020068 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020069
20070 /*Return pending as this is what the status of the request is since it has
20071 been queued*/
20072 return WDI_STATUS_PENDING;
20073}/*WDI_QueueNewAssocRequest*/
20074
20075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 away.- The assoc requests will be queued by BSSID
20079 @param
20080
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 pWDICtx: - pointer to the WDI control block
20082 pSession: - session in which to queue
20083 pEventData: pointer to the event info that needs to be
20084 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020085
20086 @see
20087 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020088*/
20089WDI_Status
20090WDI_QueueAssocRequest
20091(
20092 WDI_ControlBlockType* pWDICtx,
20093 WDI_BSSSessionType* pSession,
20094 WDI_EventInfoType* pEventData
20095)
20096{
Jeff Johnsone7245742012-09-05 17:12:55 -070020097 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020098 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020101
20102 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 Sanity check
20104 ------------------------------------------------------------------------*/
20105 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20106 {
20107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020109
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 }
20112
20113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 ------------------------------------------------------------------------*/
20116 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20117 if ( NULL == pEventDataQueue )
20118 {
20119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020120 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 WDI_ASSERT(0);
20122 return WDI_STATUS_MEM_FAILURE;
20123 }
20124
20125 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20126 if ( NULL == pEventInfo )
20127 {
20128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20129 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020130 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 WDI_ASSERT(0);
20132 wpalMemoryFree(pEventDataQueue);
20133 return WDI_STATUS_MEM_FAILURE;
20134 }
20135
20136 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20137 pEventDataQueue->pUserData = pEventData->pUserData;
20138 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20139 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 pEventDataQueue->pEventData = pEventInfo;
20142
20143 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20144
20145 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020147
20148 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020149 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020150
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020152
20153 /*The result of this operation is pending because the request has been
20154 queued and it will be processed at a later moment in time */
20155 return WDI_STATUS_PENDING;
20156}/*WDI_QueueAssocRequest*/
20157
20158/**
20159 @brief Utility function used by the DAL Core to help dequeue
20160 an association request that was pending
20161 The request will be queued up in front of the main
20162 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 @param
20164
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020166
20167
20168 @see
20169 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020170*/
20171WDI_Status
20172WDI_DequeueAssocRequest
20173(
20174 WDI_ControlBlockType* pWDICtx
20175)
20176{
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 wpt_list_node* pNode = NULL;
20178 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 WDI_BSSSessionType* pSession;
20180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020181
20182 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 Sanity check
20184 ------------------------------------------------------------------------*/
20185 if ( NULL == pWDICtx )
20186 {
20187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020189
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 }
20192
20193 /*------------------------------------------------------------------------
20194 An association has been completed => a new association can occur
20195 Check to see if there are any pending associations ->
20196 If so , transfer all the pending requests into the busy queue for
20197 processing
20198 These requests have arrived prior to the requests in the busy queue
20199 (bc they needed to be processed in order to be placed in this queue)
20200 => they will be placed at the front of the busy queue
20201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020203
20204 if ( NULL == pNode )
20205 {
20206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 return WDI_STATUS_SUCCESS;
20209 }
20210
20211 /*The node actually points to the 1st element inside the Session Id struct -
20212 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020214
20215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20216 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20217
20218 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20219 {
20220 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020221
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 the front of the main waiting queue for subsequent execution*/
20224 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 while ( NULL != pNode )
20226 {
20227 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20229 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 }
20233 else
20234 {
20235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WPAL_ASSERT(0);
20238 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020241
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20243 wpalMemoryFree(pSessionIdElement);
20244 return WDI_STATUS_SUCCESS;
20245}/*WDI_DequeueAssocRequest*/
20246
20247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020249 pending requests - all req cb will be called with
20250 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 @param
20252
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020254
20255 @see
20256 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020257*/
20258WDI_Status
20259WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020260(
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 WDI_ControlBlockType* pWDICtx
20262)
20263{
Jeff Johnsone7245742012-09-05 17:12:55 -070020264 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020266 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 void* pUserData;
20268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20269
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020271
20272 /*------------------------------------------------------------------------
20273 Go through all the requests and fail them - this will only be called
20274 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020275 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 ------------------------------------------------------------------------*/
20277 while( pNode )
20278 {
20279 /*The node actually points to the 1st element inside the Event Data struct -
20280 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 pEventDataQueue = (WDI_EventInfoType*)pNode;
20282
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20284 if ( NULL != pfnReqStatusCB )
20285 {
20286 /*Fail the request*/
20287 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20288 }
20289 /* Free data - that was allocated when queueing */
20290 if ( pEventDataQueue->pEventData != NULL )
20291 {
20292 wpalMemoryFree(pEventDataQueue->pEventData);
20293 }
20294 wpalMemoryFree(pEventDataQueue);
20295
20296 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20297 {
20298 break;
20299 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 }
20301
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 return WDI_STATUS_SUCCESS;
20303}/*WDI_ClearPendingRequests*/
20304
20305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 @brief Helper routine used to init the BSS Sessions in the WDI control block
20307
20308
20309 @param pWDICtx: pointer to the WLAN DAL context
20310
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 @see
20312*/
20313void
20314WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020315(
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 WDI_ControlBlockType* pWDICtx
20317)
20318{
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20321
20322 /*-------------------------------------------------------------------------
20323 No Sanity check
20324 -------------------------------------------------------------------------*/
20325 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20326 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20329 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20330 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20331 }
20332}/*WDI_ResetAssocSessions*/
20333
20334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 @brief Helper routine used to find a session based on the BSSID
20336
20337
20338 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020340 pSession: pointer to the session (if found)
20341
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020344*/
20345wpt_uint8
20346WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020347(
Jeff Johnson295189b2012-06-20 16:38:30 -070020348 WDI_ControlBlockType* pWDICtx,
20349 wpt_macAddr macBSSID,
20350 WDI_BSSSessionType** ppSession
20351)
20352{
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20355
20356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 -------------------------------------------------------------------------*/
20359 if ( NULL == ppSession )
20360 {
20361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020362 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 }
20365
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020367
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 /*------------------------------------------------------------------------
20369 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 ------------------------------------------------------------------------*/
20371 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20372 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020373 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20374 (eWLAN_PAL_TRUE ==
20375 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20376 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 {
20378 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 return i;
20381 }
20382 }
20383
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020385}/*WDI_FindAssocSession*/
20386
20387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 @brief Helper routine used to find a session based on the BSSID
20389
20390
20391 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 ucBSSIdx: BSS Index of the session
20393 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020394
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020397*/
20398wpt_uint8
20399WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020400(
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 WDI_ControlBlockType* pWDICtx,
20402 wpt_uint16 ucBSSIdx,
20403 WDI_BSSSessionType** ppSession
20404)
20405{
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20408
20409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020411 -------------------------------------------------------------------------*/
20412 if ( NULL == ppSession )
20413 {
20414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020415 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 }
20418
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020420
Jeff Johnsone7245742012-09-05 17:12:55 -070020421 /*------------------------------------------------------------------------
20422 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 ------------------------------------------------------------------------*/
20424 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20425 {
20426 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20427 {
20428 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 return i;
20431 }
20432 }
20433
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020435}/*WDI_FindAssocSessionByBSSIdx*/
20436
20437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 @brief Helper routine used to find a session based on the BSSID
20439
20440
20441 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 ucBSSIdx: BSS Index of the session
20443 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020444
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020447*/
20448wpt_uint8
20449WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020450(
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 WDI_ControlBlockType* pWDICtx,
20452 wpt_uint16 usIdx,
20453 WDI_BSSSessionType** ppSession
20454)
20455{
20456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20457
20458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 -------------------------------------------------------------------------*/
20461 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20462 {
20463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020464 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 }
20467
20468 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020470
20471 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473}/*WDI_FindAssocSessionByBSSIdx*/
20474
20475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020478
20479
20480 @param pWDICtx: pointer to the WLAN DAL context
20481 pSession: pointer to the session (if found)
20482
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020485*/
20486wpt_uint8
20487WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020488(
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 WDI_ControlBlockType* pWDICtx,
20490 WDI_BSSSessionType** ppSession
20491)
20492{
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 -------------------------------------------------------------------------*/
20498 if ( NULL == ppSession )
20499 {
20500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020501 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020502 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 }
20504
Jeff Johnsone7245742012-09-05 17:12:55 -070020505 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 /*------------------------------------------------------------------------
20508 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 ------------------------------------------------------------------------*/
20510 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20511 {
20512 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20513 {
20514 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 return i;
20517 }
20518 }
20519
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020521}/*WDI_FindEmptySession*/
20522
20523
20524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
20528
20529 @param pWDICtx: pointer to the WLAN DAL context
20530
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 @see
20532 @return Number of sessions in use
20533*/
20534wpt_uint8
20535WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020536(
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 WDI_ControlBlockType* pWDICtx
20538)
20539{
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020542
20543 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 Count all sessions in use
20545 ------------------------------------------------------------------------*/
20546 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20547 {
20548 if ( pWDICtx->aBSSSessions[i].bInUse )
20549 {
20550 ucCount++;
20551 }
20552 }
20553
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020555}/*WDI_GetActiveSessionsCount*/
20556
20557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020558 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020560
20561
20562 @param pWDICtx: pointer to the WLAN DAL context
20563 pSession: pointer to the session (if found)
20564
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020567*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020568void
Jeff Johnson295189b2012-06-20 16:38:30 -070020569WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020570(
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 WDI_ControlBlockType* pWDICtx,
20572 WDI_BSSSessionType* ppSession
20573)
20574{
20575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 -------------------------------------------------------------------------*/
20578 if ( NULL == ppSession )
20579 {
20580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020581 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 }
20584
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 /*------------------------------------------------------------------------
20586 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 ------------------------------------------------------------------------*/
20588 wpal_list_destroy(&ppSession->wptPendingQueue);
20589 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20591 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20593 wpal_list_init(&ppSession->wptPendingQueue);
20594
20595}/*WDI_DeleteSession*/
20596
20597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020600 @param
20601
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 WDI_AddStaParams: - pointer to the WDI Add STA params
20603 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020604
20605 @see
20606 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070020607*/
20608void
20609WDI_AddBcastSTAtoSTATable
20610(
20611 WDI_ControlBlockType* pWDICtx,
20612 WDI_AddStaParams * staParams,
20613 wpt_uint16 usBcastStaIdx
20614)
20615{
20616 WDI_AddStaParams wdiAddSTAParam = {0};
20617 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
20618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20619
20620 /*---------------------------------------------------------------------
20621 Sanity check
20622 ---------------------------------------------------------------------*/
20623 if ( NULL == staParams )
20624 {
20625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020627
Jeff Johnsone7245742012-09-05 17:12:55 -070020628 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 }
20630
20631 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
20632 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
20633 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
20634 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
20635 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
20636 wdiAddSTAParam.dpuSig = staParams->dpuSig;
20637 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
20638 WDI_MAC_ADDR_LEN );
20639 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
20640 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
20641 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
20642 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
20643 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
20644 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
20645 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
20648}
20649
20650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020651 @brief NV blob will be divided into fragments of size 4kb and
20652 Sent to HAL
20653
20654 @param pWDICtx: pointer to the WLAN DAL context
20655 pEventData: pointer to the event information structure
20656
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 @see
20658 @return Result of the function call
20659 */
20660
20661WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020662(
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 WDI_ControlBlockType* pWDICtx,
20664 WDI_EventInfoType* pEventData
20665)
20666{
20667
20668 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
20669 wpt_uint8* pSendBuffer = NULL;
20670 wpt_uint16 usDataOffset = 0;
20671 wpt_uint16 usSendSize = 0;
20672 wpt_uint16 usCurrentFragmentSize =0;
20673 wpt_uint8* pSrcBuffer = NULL;
20674 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
20675 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20676
20677 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
20678 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
20679 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
20680
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
20683
20684 /* Update the current Fragment Number */
20685 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
20686
20687 /*Update the HAL REQ structure */
20688 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
20689 halNvImgDownloadParam.nvImageReqParams.fragNumber =
20690 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
20691
20692 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 image will be sent to HAL*/
20695
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
20702 usCurrentFragmentSize = FRAGMENT_SIZE;
20703
20704 /*Update the HAL REQ structure */
20705 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
20706 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
20707
20708 }
20709 else
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 usCurrentFragmentSize = FRAGMENT_SIZE;
20712
20713 /*Update the HAL REQ structure */
20714 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
20715 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
20716 }
20717
20718 /*-----------------------------------------------------------------------
20719 Get message buffer
20720 -----------------------------------------------------------------------*/
20721 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
20722 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
20723 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020724 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
20726 {
20727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20728 "Unable to get send buffer in NV Download req %x %x ",
20729 pEventData, pwdiNvDownloadReqParams);
20730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 }
20733
20734 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
20737
20738 /* Appending the NV image fragment */
20739 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
20740 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
20741 usCurrentFragmentSize);
20742
20743 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020744 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020745
Jeff Johnsone7245742012-09-05 17:12:55 -070020746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20747 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 WDI_NV_DOWNLOAD_RESP);
20749
20750}
Jeff Johnsone7245742012-09-05 17:12:55 -070020751/*============================================================================
20752 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 ============================================================================*/
20754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 @brief Helper routine used to find a session based on the BSSID
20756 @param pContext: pointer to the WLAN DAL context
20757 @param pDPContext: pointer to the Datapath context
20758
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070020761*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020762WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020763WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
20764{
20765 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20766
20767 pCB->pDPContext = pDPContext;
20768 return;
20769}
20770
20771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 @brief Helper routine used to find a session based on the BSSID
20773
20774
20775 @param pContext: pointer to the WLAN DAL context
20776
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 @see
20778 @return pointer to Datapath context
20779*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020780WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020781WDI_DS_GetDatapathContext (void *pContext)
20782{
20783 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20784 return pCB->pDPContext;
20785}
20786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 @brief Helper routine used to find a session based on the BSSID
20788
20789
20790 @param pContext: pointer to the WLAN DAL context
20791 @param pDTDriverContext: pointer to the Transport Driver context
20792
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 @see
20794 @return void
20795*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020796WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070020797WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
20798{
20799 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
20800
20801 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803}
20804
20805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 @brief Helper routine used to find a session based on the BSSID
20807
20808
20809 @param pWDICtx: pointer to the WLAN DAL context
20810
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070020813*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020814WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070020815WDT_GetTransportDriverContext (void *pContext)
20816{
20817 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070020819}
20820
Jeff Johnsone7245742012-09-05 17:12:55 -070020821/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 Helper inline converters
20823 ============================================================================*/
20824/*Convert WDI driver type into HAL driver type*/
20825WPT_STATIC WPT_INLINE WDI_Status
20826WDI_HAL_2_WDI_STATUS
20827(
20828 eHalStatus halStatus
20829)
20830{
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 the chances of getting inlined*/
20833 switch( halStatus )
20834 {
20835 case eHAL_STATUS_SUCCESS:
20836 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20837 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
20838 return WDI_STATUS_SUCCESS;
20839 case eHAL_STATUS_FAILURE:
20840 return WDI_STATUS_E_FAILURE;
20841 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 return WDI_STATUS_MEM_FAILURE;
20843 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070020844 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 default:
20846 return WDI_STATUS_DEV_INTERNAL_FAILURE;
20847 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020848
Jeff Johnsone7245742012-09-05 17:12:55 -070020849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020850}/*WDI_HAL_2_WDI_STATUS*/
20851
20852/*Convert WDI request type into HAL request type*/
20853WPT_STATIC WPT_INLINE tHalHostMsgType
20854WDI_2_HAL_REQ_TYPE
20855(
20856 WDI_RequestEnumType wdiReqType
20857)
20858{
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 the chances of getting inlined*/
20861 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020867 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020878 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020894 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020896 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 return WLAN_HAL_RMV_STAKEY_REQ;
20898 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 case WDI_DEL_BA_REQ:
20907 return WLAN_HAL_DEL_BA_REQ;
20908#ifdef FEATURE_WLAN_CCX
20909 case WDI_TSM_STATS_REQ:
20910 return WLAN_HAL_TSM_STATS_REQ;
20911#endif
20912 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020921 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 case WDI_ADD_BA_SESSION_REQ:
20923 return WLAN_HAL_ADD_BA_SESSION_REQ;
20924 case WDI_TRIGGER_BA_REQ:
20925 return WLAN_HAL_TRIGGER_BA_REQ;
20926 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020927 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020928 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
20931 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
20932 case WDI_SET_MAX_TX_POWER_REQ:
20933 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
20934#ifdef WLAN_FEATURE_P2P
20935 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
20936 return WLAN_HAL_SET_P2P_GONOA_REQ;
20937#endif
20938 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020949 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 case WDI_REM_BEACON_FILTER_REQ:
20959 return WLAN_HAL_REM_BCN_FILTER_REQ;
20960 case WDI_SET_RSSI_THRESHOLDS_REQ:
20961 return WLAN_HAL_SET_RSSI_THRESH_REQ;
20962 case WDI_HOST_OFFLOAD_REQ:
20963 return WLAN_HAL_HOST_OFFLOAD_REQ;
20964 case WDI_WOWL_ADD_BC_PTRN_REQ:
20965 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
20966 case WDI_WOWL_DEL_BC_PTRN_REQ:
20967 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
20968 case WDI_WOWL_ENTER_REQ:
20969 return WLAN_HAL_ENTER_WOWL_REQ;
20970 case WDI_WOWL_EXIT_REQ:
20971 return WLAN_HAL_EXIT_WOWL_REQ;
20972 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
20973 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
20974 case WDI_NV_DOWNLOAD_REQ:
20975 return WLAN_HAL_DOWNLOAD_NV_REQ;
20976 case WDI_FLUSH_AC_REQ:
20977 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
20978 case WDI_BTAMP_EVENT_REQ:
20979 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
20980#ifdef WLAN_FEATURE_VOWIFI_11R
20981 case WDI_AGGR_ADD_TS_REQ:
20982 return WLAN_HAL_AGGR_ADD_TS_REQ;
20983#endif /* WLAN_FEATURE_VOWIFI_11R */
20984#ifdef ANI_MANF_DIAG
20985 case WDI_FTM_CMD_REQ:
20986 return WLAN_HAL_PROCESS_PTT_REQ;
20987#endif /* ANI_MANF_DIAG */
20988 case WDI_ADD_STA_SELF_REQ:
20989 return WLAN_HAL_ADD_STA_SELF_REQ;
20990 case WDI_DEL_STA_SELF_REQ:
20991 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070020992#ifdef FEATURE_OEM_DATA_SUPPORT
20993 case WDI_START_OEM_DATA_REQ:
20994 return WLAN_HAL_START_OEM_DATA_REQ;
20995#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 case WDI_HOST_RESUME_REQ:
20997 return WLAN_HAL_HOST_RESUME_REQ;
20998 case WDI_HOST_SUSPEND_IND:
20999 return WLAN_HAL_HOST_SUSPEND_IND;
21000 case WDI_KEEP_ALIVE_REQ:
21001 return WLAN_HAL_KEEP_ALIVE_REQ;
21002
21003#ifdef FEATURE_WLAN_SCAN_PNO
21004 case WDI_SET_PREF_NETWORK_REQ:
21005 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21006 case WDI_SET_RSSI_FILTER_REQ:
21007 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21008 case WDI_UPDATE_SCAN_PARAMS_REQ:
21009 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21010#endif // FEATURE_WLAN_SCAN_PNO
21011 case WDI_SET_TX_PER_TRACKING_REQ:
21012 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21013#ifdef WLAN_FEATURE_PACKET_FILTERING
21014 case WDI_8023_MULTICAST_LIST_REQ:
21015 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21016 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21019 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21020 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21021 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21022#endif // WLAN_FEATURE_PACKET_FILTERING
21023 case WDI_HAL_DUMP_CMD_REQ:
21024 return WLAN_HAL_DUMP_COMMAND_REQ;
21025#ifdef WLAN_FEATURE_GTK_OFFLOAD
21026 case WDI_GTK_OFFLOAD_REQ:
21027 return WLAN_HAL_GTK_OFFLOAD_REQ;
21028 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21029 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21030#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21031
21032 case WDI_INIT_SCAN_CON_REQ:
21033 return WLAN_HAL_INIT_SCAN_CON_REQ;
21034 case WDI_SET_POWER_PARAMS_REQ:
21035 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21036 case WDI_SET_TM_LEVEL_REQ:
21037 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21038 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21039 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021040#ifdef WLAN_FEATURE_11AC
21041 case WDI_UPDATE_VHT_OP_MODE_REQ:
21042 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21043#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021047
Jeff Johnson295189b2012-06-20 16:38:30 -070021048}/*WDI_2_HAL_REQ_TYPE*/
21049
21050/*Convert WDI response type into HAL response type*/
21051WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21052HAL_2_WDI_RSP_TYPE
21053(
21054 tHalHostMsgType halMsg
21055)
21056{
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 the chances of getting inlined*/
21059 switch( halMsg )
21060 {
21061 case WLAN_HAL_START_RSP:
21062 return WDI_START_RESP;
21063 case WLAN_HAL_STOP_RSP:
21064 return WDI_STOP_RESP;
21065 case WLAN_HAL_INIT_SCAN_RSP:
21066 return WDI_INIT_SCAN_RESP;
21067 case WLAN_HAL_START_SCAN_RSP:
21068 return WDI_START_SCAN_RESP;
21069 case WLAN_HAL_END_SCAN_RSP:
21070 return WDI_END_SCAN_RESP;
21071 case WLAN_HAL_FINISH_SCAN_RSP:
21072 return WDI_FINISH_SCAN_RESP;
21073 case WLAN_HAL_CONFIG_STA_RSP:
21074 return WDI_CONFIG_STA_RESP;
21075 case WLAN_HAL_DELETE_STA_RSP:
21076 return WDI_DEL_STA_RESP;
21077 case WLAN_HAL_CONFIG_BSS_RSP:
21078 return WDI_CONFIG_BSS_RESP;
21079 case WLAN_HAL_DELETE_BSS_RSP:
21080 return WDI_DEL_BSS_RESP;
21081 case WLAN_HAL_JOIN_RSP:
21082 return WDI_JOIN_RESP;
21083 case WLAN_HAL_POST_ASSOC_RSP:
21084 return WDI_POST_ASSOC_RESP;
21085 case WLAN_HAL_SET_BSSKEY_RSP:
21086 return WDI_SET_BSS_KEY_RESP;
21087 case WLAN_HAL_SET_STAKEY_RSP:
21088 return WDI_SET_STA_KEY_RESP;
21089 case WLAN_HAL_RMV_BSSKEY_RSP:
21090 return WDI_RMV_BSS_KEY_RESP;
21091 case WLAN_HAL_RMV_STAKEY_RSP:
21092 return WDI_RMV_STA_KEY_RESP;
21093 case WLAN_HAL_SET_BCASTKEY_RSP:
21094 return WDI_SET_STA_BCAST_KEY_RESP;
21095 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21096 // return WDI_RMV_STA_BCAST_KEY_RESP;
21097 case WLAN_HAL_ADD_TS_RSP:
21098 return WDI_ADD_TS_RESP;
21099 case WLAN_HAL_DEL_TS_RSP:
21100 return WDI_DEL_TS_RESP;
21101 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21102 return WDI_UPD_EDCA_PRMS_RESP;
21103 case WLAN_HAL_ADD_BA_RSP:
21104 return WDI_ADD_BA_RESP;
21105 case WLAN_HAL_DEL_BA_RSP:
21106 return WDI_DEL_BA_RESP;
21107#ifdef FEATURE_WLAN_CCX
21108 case WLAN_HAL_TSM_STATS_RSP:
21109 return WDI_TSM_STATS_RESP;
21110#endif
21111 case WLAN_HAL_CH_SWITCH_RSP:
21112 return WDI_CH_SWITCH_RESP;
21113 case WLAN_HAL_SET_LINK_ST_RSP:
21114 return WDI_SET_LINK_ST_RESP;
21115 case WLAN_HAL_GET_STATS_RSP:
21116 return WDI_GET_STATS_RESP;
21117 case WLAN_HAL_UPDATE_CFG_RSP:
21118 return WDI_UPDATE_CFG_RESP;
21119 case WLAN_HAL_ADD_BA_SESSION_RSP:
21120 return WDI_ADD_BA_SESSION_RESP;
21121 case WLAN_HAL_TRIGGER_BA_RSP:
21122 return WDI_TRIGGER_BA_RESP;
21123 case WLAN_HAL_UPDATE_BEACON_RSP:
21124 return WDI_UPD_BCON_PRMS_RESP;
21125 case WLAN_HAL_SEND_BEACON_RSP:
21126 return WDI_SND_BCON_RESP;
21127 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21128 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21129 /*Indications*/
21130 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21131 return WDI_HAL_RSSI_NOTIFICATION_IND;
21132 case WLAN_HAL_MISSED_BEACON_IND:
21133 return WDI_HAL_MISSED_BEACON_IND;
21134 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21135 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21136 case WLAN_HAL_MIC_FAILURE_IND:
21137 return WDI_HAL_MIC_FAILURE_IND;
21138 case WLAN_HAL_FATAL_ERROR_IND:
21139 return WDI_HAL_FATAL_ERROR_IND;
21140 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21141 return WDI_HAL_DEL_STA_IND;
21142 case WLAN_HAL_COEX_IND:
21143 return WDI_HAL_COEX_IND;
21144 case WLAN_HAL_OTA_TX_COMPL_IND:
21145 return WDI_HAL_TX_COMPLETE_IND;
21146#ifdef WLAN_FEATURE_P2P
21147 case WLAN_HAL_P2P_NOA_ATTR_IND:
21148 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021149 case WLAN_HAL_P2P_NOA_START_IND:
21150 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021151#endif
21152 case WLAN_HAL_TX_PER_HIT_IND:
21153 return WDI_HAL_TX_PER_HIT_IND;
21154 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21155 return WDI_SET_MAX_TX_POWER_RESP;
21156#ifdef WLAN_FEATURE_P2P
21157 case WLAN_HAL_SET_P2P_GONOA_RSP:
21158 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
21159#endif
21160 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021162 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021175 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21179 return WDI_SET_BEACON_FILTER_RESP;
21180 case WLAN_HAL_REM_BCN_FILTER_RSP:
21181 return WDI_REM_BEACON_FILTER_RESP;
21182 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21183 return WDI_SET_RSSI_THRESHOLDS_RESP;
21184 case WLAN_HAL_HOST_OFFLOAD_RSP:
21185 return WDI_HOST_OFFLOAD_RESP;
21186 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21187 return WDI_WOWL_ADD_BC_PTRN_RESP;
21188 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21189 return WDI_WOWL_DEL_BC_PTRN_RESP;
21190 case WLAN_HAL_ENTER_WOWL_RSP:
21191 return WDI_WOWL_ENTER_RESP;
21192 case WLAN_HAL_EXIT_WOWL_RSP:
21193 return WDI_WOWL_EXIT_RESP;
21194 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21195 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21196 case WLAN_HAL_DOWNLOAD_NV_RSP:
21197 return WDI_NV_DOWNLOAD_RESP;
21198 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21199 return WDI_FLUSH_AC_RESP;
21200 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21201 return WDI_BTAMP_EVENT_RESP;
21202#ifdef ANI_MANF_DIAG
21203 case WLAN_HAL_PROCESS_PTT_RSP:
21204 return WDI_FTM_CMD_RESP;
21205#endif /* ANI_MANF_DIAG */
21206 case WLAN_HAL_ADD_STA_SELF_RSP:
21207 return WDI_ADD_STA_SELF_RESP;
21208case WLAN_HAL_DEL_STA_SELF_RSP:
21209 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021210#ifdef FEATURE_OEM_DATA_SUPPORT
21211 case WLAN_HAL_START_OEM_DATA_RSP:
21212 return WDI_START_OEM_DATA_RESP;
21213#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021214 case WLAN_HAL_HOST_RESUME_RSP:
21215 return WDI_HOST_RESUME_RESP;
21216 case WLAN_HAL_KEEP_ALIVE_RSP:
21217 return WDI_KEEP_ALIVE_RESP;
21218#ifdef FEATURE_WLAN_SCAN_PNO
21219 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21220 return WDI_SET_PREF_NETWORK_RESP;
21221 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21224 return WDI_UPDATE_SCAN_PARAMS_RESP;
21225 case WLAN_HAL_PREF_NETW_FOUND_IND:
21226 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21227#endif // FEATURE_WLAN_SCAN_PNO
21228 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21229 return WDI_SET_TX_PER_TRACKING_RESP;
21230#ifdef WLAN_FEATURE_PACKET_FILTERING
21231 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21232 return WDI_8023_MULTICAST_LIST_RESP;
21233 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21234 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21235 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21236 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21237 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21238 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21239#endif // WLAN_FEATURE_PACKET_FILTERING
21240
21241 case WLAN_HAL_DUMP_COMMAND_RSP:
21242 return WDI_HAL_DUMP_CMD_RESP;
21243 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21244 return WDI_SET_POWER_PARAMS_RESP;
21245#ifdef WLAN_FEATURE_VOWIFI_11R
21246 case WLAN_HAL_AGGR_ADD_TS_RSP:
21247 return WDI_AGGR_ADD_TS_RESP;
21248#endif
21249
21250#ifdef WLAN_FEATURE_GTK_OFFLOAD
21251 case WLAN_HAL_GTK_OFFLOAD_RSP:
21252 return WDI_GTK_OFFLOAD_RESP;
21253 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21254 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21255#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21256#ifdef WLAN_WAKEUP_EVENTS
21257 case WLAN_HAL_WAKE_REASON_IND:
21258 return WDI_HAL_WAKE_REASON_IND;
21259#endif // WLAN_WAKEUP_EVENTS
21260
21261 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21262 return WDI_SET_TM_LEVEL_RESP;
21263 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21264 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021265#ifdef WLAN_FEATURE_11AC
21266 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21267 return WDI_UPDATE_VHT_OP_MODE_RESP;
21268#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021271 }
21272
21273}/*HAL_2_WDI_RSP_TYPE*/
21274
21275
21276/*Convert WDI driver type into HAL driver type*/
21277WPT_STATIC WPT_INLINE tDriverType
21278WDI_2_HAL_DRV_TYPE
21279(
21280 WDI_DriverType wdiDriverType
21281)
21282{
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 the chances of getting inlined*/
21285 switch( wdiDriverType )
21286 {
21287 case WDI_DRIVER_TYPE_PRODUCTION:
21288 return eDRIVER_TYPE_PRODUCTION;
21289 case WDI_DRIVER_TYPE_MFG:
21290 return eDRIVER_TYPE_MFG;
21291 case WDI_DRIVER_TYPE_DVT:
21292 return eDRIVER_TYPE_DVT;
21293 }
21294
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021296}/*WDI_2_HAL_DRV_TYPE*/
21297
21298
21299/*Convert WDI stop reason into HAL stop reason*/
21300WPT_STATIC WPT_INLINE tHalStopType
21301WDI_2_HAL_STOP_REASON
21302(
21303 WDI_StopType wdiDriverType
21304)
21305{
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 the chances of getting inlined*/
21308 switch( wdiDriverType )
21309 {
21310 case WDI_STOP_TYPE_SYS_RESET:
21311 return HAL_STOP_TYPE_SYS_RESET;
21312 case WDI_DRIVER_TYPE_MFG:
21313 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21314 case WDI_STOP_TYPE_RF_KILL:
21315 return HAL_STOP_TYPE_RF_KILL;
21316 }
21317
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021319}/*WDI_2_HAL_STOP_REASON*/
21320
21321
21322/*Convert WDI scan mode type into HAL scan mode type*/
21323WPT_STATIC WPT_INLINE eHalSysMode
21324WDI_2_HAL_SCAN_MODE
21325(
21326 WDI_ScanMode wdiScanMode
21327)
21328{
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 the chances of getting inlined*/
21331 switch( wdiScanMode )
21332 {
21333 case WDI_SCAN_MODE_NORMAL:
21334 return eHAL_SYS_MODE_NORMAL;
21335 case WDI_SCAN_MODE_LEARN:
21336 return eHAL_SYS_MODE_LEARN;
21337 case WDI_SCAN_MODE_SCAN:
21338 return eHAL_SYS_MODE_SCAN;
21339 case WDI_SCAN_MODE_PROMISC:
21340 return eHAL_SYS_MODE_PROMISC;
21341 case WDI_SCAN_MODE_SUSPEND_LINK:
21342 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021343 case WDI_SCAN_MODE_ROAM_SCAN:
21344 return eHAL_SYS_MODE_ROAM_SCAN;
21345 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21346 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 }
21348
Jeff Johnsone7245742012-09-05 17:12:55 -070021349 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021350}/*WDI_2_HAL_SCAN_MODE*/
21351
21352/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021353WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021354WDI_2_HAL_SEC_CH_OFFSET
21355(
21356 WDI_HTSecondaryChannelOffset wdiSecChOffset
21357)
21358{
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021360 the chances of getting inlined*/
21361 switch( wdiSecChOffset )
21362 {
21363 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021366 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21369#ifdef WLAN_FEATURE_11AC
21370 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21371 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21372 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21373 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21374 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21375 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21376 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21377 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21378 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21379 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21380 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21381 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21382 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21383 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21384#endif
21385 default:
21386 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 }
21388
Jeff Johnsone7245742012-09-05 17:12:55 -070021389 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021390}/*WDI_2_HAL_SEC_CH_OFFSET*/
21391
21392/*Convert WDI BSS type into HAL BSS type*/
21393WPT_STATIC WPT_INLINE tSirBssType
21394WDI_2_HAL_BSS_TYPE
21395(
21396 WDI_BssType wdiBSSType
21397)
21398{
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 the chances of getting inlined*/
21401 switch( wdiBSSType )
21402 {
21403 case WDI_INFRASTRUCTURE_MODE:
21404 return eSIR_INFRASTRUCTURE_MODE;
21405 case WDI_INFRA_AP_MODE:
21406 return eSIR_INFRA_AP_MODE;
21407 case WDI_IBSS_MODE:
21408 return eSIR_IBSS_MODE;
21409 case WDI_BTAMP_STA_MODE:
21410 return eSIR_BTAMP_STA_MODE;
21411 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021412 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413 case WDI_BSS_AUTO_MODE:
21414 return eSIR_AUTO_MODE;
21415 }
21416
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021418}/*WDI_2_HAL_BSS_TYPE*/
21419
21420/*Convert WDI NW type into HAL NW type*/
21421WPT_STATIC WPT_INLINE tSirNwType
21422WDI_2_HAL_NW_TYPE
21423(
21424 WDI_NwType wdiNWType
21425)
21426{
Jeff Johnsone7245742012-09-05 17:12:55 -070021427 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 the chances of getting inlined*/
21429 switch( wdiNWType )
21430 {
21431 case WDI_11A_NW_TYPE:
21432 return eSIR_11A_NW_TYPE;
21433 case WDI_11B_NW_TYPE:
21434 return eSIR_11B_NW_TYPE;
21435 case WDI_11G_NW_TYPE:
21436 return eSIR_11G_NW_TYPE;
21437 case WDI_11N_NW_TYPE:
21438 return eSIR_11N_NW_TYPE;
21439 }
21440
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021442}/*WDI_2_HAL_NW_TYPE*/
21443
21444/*Convert WDI chanel bonding type into HAL cb type*/
21445WPT_STATIC WPT_INLINE ePhyChanBondState
21446WDI_2_HAL_CB_STATE
21447(
21448 WDI_PhyChanBondState wdiCbState
21449)
21450{
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 the chances of getting inlined*/
21453 switch ( wdiCbState )
21454 {
21455 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21456 return PHY_SINGLE_CHANNEL_CENTERED;
21457 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21458 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21459 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21460 return PHY_DOUBLE_CHANNEL_CENTERED;
21461 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21462 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021463#ifdef WLAN_FEATURE_11AC
21464 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21465 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21466 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21467 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21468 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21469 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21470 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21471 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21472 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21473 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21474 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21475 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21476 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21477 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21478#endif
21479 case WDI_MAX_CB_STATE:
21480 default:
21481 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021483
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 return PHY_CHANNEL_BONDING_STATE_MAX;
21485}/*WDI_2_HAL_CB_STATE*/
21486
21487/*Convert WDI chanel bonding type into HAL cb type*/
21488WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21489WDI_2_HAL_HT_OPER_MODE
21490(
21491 WDI_HTOperatingMode wdiHTOperMode
21492)
21493{
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 the chances of getting inlined*/
21496 switch ( wdiHTOperMode )
21497 {
21498 case WDI_HT_OP_MODE_PURE:
21499 return eSIR_HT_OP_MODE_PURE;
21500 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21501 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21502 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21503 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21504 case WDI_HT_OP_MODE_MIXED:
21505 return eSIR_HT_OP_MODE_MIXED;
21506 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021507
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 return eSIR_HT_OP_MODE_MAX;
21509}/*WDI_2_HAL_HT_OPER_MODE*/
21510
21511/*Convert WDI mimo PS type into HAL mimo PS type*/
21512WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21513WDI_2_HAL_MIMO_PS
21514(
21515 WDI_HTMIMOPowerSaveState wdiHTOperMode
21516)
21517{
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 the chances of getting inlined*/
21520 switch ( wdiHTOperMode )
21521 {
21522 case WDI_HT_MIMO_PS_STATIC:
21523 return eSIR_HT_MIMO_PS_STATIC;
21524 case WDI_HT_MIMO_PS_DYNAMIC:
21525 return eSIR_HT_MIMO_PS_DYNAMIC;
21526 case WDI_HT_MIMO_PS_NA:
21527 return eSIR_HT_MIMO_PS_NA;
21528 case WDI_HT_MIMO_PS_NO_LIMIT:
21529 return eSIR_HT_MIMO_PS_NO_LIMIT;
21530 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021531
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 return eSIR_HT_MIMO_PS_MAX;
21533}/*WDI_2_HAL_MIMO_PS*/
21534
21535/*Convert WDI ENC type into HAL ENC type*/
21536WPT_STATIC WPT_INLINE tAniEdType
21537WDI_2_HAL_ENC_TYPE
21538(
21539 WDI_EncryptType wdiEncType
21540)
21541{
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 the chances of getting inlined*/
21544 switch ( wdiEncType )
21545 {
21546 case WDI_ENCR_NONE:
21547 return eSIR_ED_NONE;
21548
21549 case WDI_ENCR_WEP40:
21550 return eSIR_ED_WEP40;
21551
21552 case WDI_ENCR_WEP104:
21553 return eSIR_ED_WEP104;
21554
21555 case WDI_ENCR_TKIP:
21556 return eSIR_ED_TKIP;
21557
21558 case WDI_ENCR_CCMP:
21559 return eSIR_ED_CCMP;
21560
21561 case WDI_ENCR_AES_128_CMAC:
21562 return eSIR_ED_AES_128_CMAC;
21563#if defined(FEATURE_WLAN_WAPI)
21564 case WDI_ENCR_WPI:
21565 return eSIR_ED_WPI;
21566#endif
21567 default:
21568 return eSIR_ED_NOT_IMPLEMENTED;
21569 }
21570
21571}/*WDI_2_HAL_ENC_TYPE*/
21572
21573/*Convert WDI WEP type into HAL WEP type*/
21574WPT_STATIC WPT_INLINE tAniWepType
21575WDI_2_HAL_WEP_TYPE
21576(
21577 WDI_WepType wdiWEPType
21578)
21579{
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 the chances of getting inlined*/
21582 switch ( wdiWEPType )
21583 {
21584 case WDI_WEP_STATIC:
21585 return eSIR_WEP_STATIC;
21586
21587 case WDI_WEP_DYNAMIC:
21588 return eSIR_WEP_DYNAMIC;
21589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021590
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 return eSIR_WEP_MAX;
21592}/*WDI_2_HAL_WEP_TYPE*/
21593
21594WPT_STATIC WPT_INLINE tSirLinkState
21595WDI_2_HAL_LINK_STATE
21596(
21597 WDI_LinkStateType wdiLinkState
21598)
21599{
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021601 the chances of getting inlined*/
21602 switch ( wdiLinkState )
21603 {
21604 case WDI_LINK_IDLE_STATE:
21605 return eSIR_LINK_IDLE_STATE;
21606
21607 case WDI_LINK_PREASSOC_STATE:
21608 return eSIR_LINK_PREASSOC_STATE;
21609
21610 case WDI_LINK_POSTASSOC_STATE:
21611 return eSIR_LINK_POSTASSOC_STATE;
21612
21613 case WDI_LINK_AP_STATE:
21614 return eSIR_LINK_AP_STATE;
21615
21616 case WDI_LINK_IBSS_STATE:
21617 return eSIR_LINK_IBSS_STATE;
21618
21619 case WDI_LINK_BTAMP_PREASSOC_STATE:
21620 return eSIR_LINK_BTAMP_PREASSOC_STATE;
21621
21622 case WDI_LINK_BTAMP_POSTASSOC_STATE:
21623 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
21624
21625 case WDI_LINK_BTAMP_AP_STATE:
21626 return eSIR_LINK_BTAMP_AP_STATE;
21627
21628 case WDI_LINK_BTAMP_STA_STATE:
21629 return eSIR_LINK_BTAMP_STA_STATE;
21630
21631 case WDI_LINK_LEARN_STATE:
21632 return eSIR_LINK_LEARN_STATE;
21633
21634 case WDI_LINK_SCAN_STATE:
21635 return eSIR_LINK_SCAN_STATE;
21636
21637 case WDI_LINK_FINISH_SCAN_STATE:
21638 return eSIR_LINK_FINISH_SCAN_STATE;
21639
21640 case WDI_LINK_INIT_CAL_STATE:
21641 return eSIR_LINK_INIT_CAL_STATE;
21642
21643 case WDI_LINK_FINISH_CAL_STATE:
21644 return eSIR_LINK_FINISH_CAL_STATE;
21645
21646#ifdef WLAN_FEATURE_P2P
21647 case WDI_LINK_LISTEN_STATE:
21648 return eSIR_LINK_LISTEN_STATE;
21649#endif
21650
21651 default:
21652 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021654}
21655
Jeff Johnsone7245742012-09-05 17:12:55 -070021656/*Translate a STA Context from WDI into HAL*/
21657WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070021658void
21659WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070021660(
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 tConfigStaParams* phalConfigSta,
21662 WDI_ConfigStaReqInfoType* pwdiConfigSta
21663)
21664{
21665 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070021666#ifdef WLAN_FEATURE_11AC
21667 /* Get the Version 1 Handler */
21668 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
21669 if (WDI_getFwWlanFeatCaps(DOT11AC))
21670 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021671 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 }
21673#endif
21674 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 the chances of getting inlined*/
21676
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 wpalMemoryCopy(phalConfigSta->bssId,
21678 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
21679
21680 wpalMemoryCopy(phalConfigSta->staMac,
21681 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070021682
21683 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
21684 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
21685 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
21686 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
21687 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
21688 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
21689 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
21690 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
21691 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
21692 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
21693 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
21694 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
21695 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
21696 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
21697 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
21698 phalConfigSta->action = pwdiConfigSta->wdiAction;
21699 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
21700 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
21701 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
21702 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
21703 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
21704 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
21705 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070021706
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
21708
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 pwdiConfigSta->wdiSupportedRates.opRateMode;
21711 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
21712 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021713 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 pwdiConfigSta->wdiSupportedRates.llbRates[i];
21715 }
21716 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
21717 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021718 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021719 pwdiConfigSta->wdiSupportedRates.llaRates[i];
21720 }
21721 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
21722 {
21723 phalConfigSta->supportedRates.aniLegacyRates[i] =
21724 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
21725 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021726 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
21728 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
21729 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
21732 }
21733 phalConfigSta->supportedRates.rxHighestDataRate =
21734 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
21735
Jeff Johnsone7245742012-09-05 17:12:55 -070021736#ifdef WLAN_FEATURE_11AC
21737 if(phalConfigSta_V1 != NULL)
21738 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021739 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
21740 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
21741 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
21742 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 }
21744#endif
21745
Jeff Johnson295189b2012-06-20 16:38:30 -070021746#ifdef WLAN_FEATURE_P2P
21747 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
21748#endif
21749
Jeff Johnsone7245742012-09-05 17:12:55 -070021750#ifdef WLAN_FEATURE_11AC
21751 if(phalConfigSta_V1 != NULL)
21752 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021753 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
21754 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 }
21756#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021757}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070021758
21759/*Translate a Rate set info from WDI into HAL*/
21760WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021761WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070021762(
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 tSirMacRateSet* pHalRateSet,
21764 WDI_RateSet* pwdiRateSet
21765)
21766{
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21769
21770 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
21771 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
21772
21773 for ( i = 0; i < pHalRateSet->numRates; i++ )
21774 {
21775 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
21776 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021777
Jeff Johnson295189b2012-06-20 16:38:30 -070021778}/*WDI_CopyWDIRateSetToHALRateSet*/
21779
21780
21781/*Translate an EDCA Parameter Record from WDI into HAL*/
21782WPT_STATIC WPT_INLINE void
21783WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070021784(
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 tSirMacEdcaParamRecord* phalEdcaParam,
21786 WDI_EdcaParamRecord* pWDIEdcaParam
21787)
21788{
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 the chances of getting inlined*/
21791
21792 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
21793 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
21794 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
21795 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
21796
21797 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
21798 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
21799 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
21800}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
21801
21802
21803/*Copy a management frame header from WDI fmt into HAL fmt*/
21804WPT_STATIC WPT_INLINE void
21805WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
21806(
21807 tSirMacMgmtHdr* pmacMgmtHdr,
21808 WDI_MacMgmtHdr* pwdiMacMgmtHdr
21809)
21810{
21811 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
21812 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
21813 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
21814 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
21815 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
21816 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
21817 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
21818 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
21819 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
21820 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
21821 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
21822
21823 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
21824 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
21825
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 pwdiMacMgmtHdr->bssId, 6);
21832
21833 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
21834 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
21835 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
21836
21837}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
21838
21839
21840/*Copy config bss parameters from WDI fmt into HAL fmt*/
21841WPT_STATIC WPT_INLINE void
21842WDI_CopyWDIConfigBSSToHALConfigBSS
21843(
21844 tConfigBssParams* phalConfigBSS,
21845 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
21846)
21847{
21848
21849 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021850#ifdef WLAN_FEATURE_11AC
21851 /* Get the Version 1 Handler */
21852 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
21853 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021854 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070021855#endif
21856
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 wpalMemoryCopy( phalConfigBSS->bssId,
21858 pwdiConfigBSS->macBSSID,
21859 WDI_MAC_ADDR_LEN);
21860
21861#ifdef HAL_SELF_STA_PER_BSS
21862 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
21863 pwdiConfigBSS->macSelfAddr,
21864 WDI_MAC_ADDR_LEN);
21865#endif
21866
21867 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
21868
21869 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
21870 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
21871
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 pwdiConfigBSS->ucShortSlotTimeSupported;
21874 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
21875 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
21876 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
21877 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
21878 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070021880 pwdiConfigBSS->ucTXOPProtectionFullSupport;
21881 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
21882 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
21883 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
21884 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
21885 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
21886 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
21887 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
21888 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
21889 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
21890 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
21891
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 phalConfigBSS->htOperMode =
21893 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070021894
21895 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
21896 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
21897 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
21898 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
21899
21900#ifdef WLAN_FEATURE_VOWIFI
21901 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
21902#endif
21903
21904 /*! Used 32 as magic number because that is how the ssid is declared inside the
21905 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
21908 pwdiConfigBSS->wdiSSID.ucLength : 32;
21909 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 pwdiConfigBSS->wdiSSID.sSSID,
21911 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070021912
21913 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
21914 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070021915
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
21917 &pwdiConfigBSS->wdiRateSet);
21918
21919 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
21920
21921 if(phalConfigBSS->edcaParamsValid)
21922 {
21923 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
21924 &pwdiConfigBSS->wdiBEEDCAParams);
21925 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
21926 &pwdiConfigBSS->wdiBKEDCAParams);
21927 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
21928 &pwdiConfigBSS->wdiVIEDCAParams);
21929 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
21930 &pwdiConfigBSS->wdiVOEDCAParams);
21931 }
21932
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070021934
21935 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
21936
21937#ifdef WLAN_FEATURE_VOWIFI_11R
21938
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070021941
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 if( phalConfigBSS->extSetStaKeyParamValid )
21943 {
21944 /*-----------------------------------------------------------------------
21945 Copy the STA Key parameters into the HAL message
21946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
21949
Jeff Johnsone7245742012-09-05 17:12:55 -070021950 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
21952
21953 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
21954
21955 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
21956
21957 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
21958
21959#ifdef WLAN_SOFTAP_FEATURE
21960 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
21961 keyIndex++)
21962 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
21965 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
21966 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
21967 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
21968 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
21969 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
21976 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 WDI_MAX_KEY_LENGTH);
21979 }
21980#else
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 phalConfigBSS->extSetStaKeyParam.key.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyId;
21983 phalConfigBSS->extSetStaKeyParam.key.unicast =
21984 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].unicast;
21985 phalConfigBSS->extSetStaKeyParam.key.keyDirection =
21986 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyDirection;
21987 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 phalConfigBSS->extSetStaKeyParam.key.paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 phalConfigBSS->extSetStaKeyParam.key.keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].keyLength;
21994 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key.key,
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[0].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 WDI_MAX_KEY_LENGTH);
21997#endif
21998 }
21999 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22000 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 sizeof(phalConfigBSS->extSetStaKeyParam) );
22003 }
22004
22005#endif /*WLAN_FEATURE_VOWIFI_11R*/
22006
Jeff Johnsone7245742012-09-05 17:12:55 -070022007#ifdef WLAN_FEATURE_11AC
22008 if(phalConfigBSS_V1 != NULL)
22009 {
22010 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22011 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22012 }
22013#endif
22014
Jeff Johnson295189b2012-06-20 16:38:30 -070022015}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22016
22017
Jeff Johnsone7245742012-09-05 17:12:55 -070022018/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 pointed to by user data */
22020WPT_STATIC WPT_INLINE void
22021WDI_ExtractRequestCBFromEvent
22022(
22023 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022025 void** ppUserData
22026)
22027{
22028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22029 switch ( pEvent->wdiRequest )
22030 {
22031 case WDI_START_REQ:
22032 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22033 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22034 break;
22035 case WDI_STOP_REQ:
22036 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22037 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22038 break;
22039 case WDI_INIT_SCAN_REQ:
22040 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22041 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22042 break;
22043 case WDI_START_SCAN_REQ:
22044 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22045 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22046 break;
22047 case WDI_END_SCAN_REQ:
22048 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22049 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22050 break;
22051 case WDI_FINISH_SCAN_REQ:
22052 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22053 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22054 break;
22055 case WDI_JOIN_REQ:
22056 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22057 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22058 break;
22059 case WDI_CONFIG_BSS_REQ:
22060 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22061 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22062 break;
22063 case WDI_DEL_BSS_REQ:
22064 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22065 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22066 break;
22067 case WDI_POST_ASSOC_REQ:
22068 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22069 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22070 break;
22071 case WDI_DEL_STA_REQ:
22072 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22073 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22074 break;
22075 case WDI_DEL_STA_SELF_REQ:
22076 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22077 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22078 break;
22079
22080 case WDI_SET_BSS_KEY_REQ:
22081 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22082 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22083 break;
22084 case WDI_RMV_BSS_KEY_REQ:
22085 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22086 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22087 break;
22088 case WDI_SET_STA_KEY_REQ:
22089 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22090 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22091 break;
22092 case WDI_RMV_STA_KEY_REQ:
22093 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22094 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22095 break;
22096 case WDI_ADD_TS_REQ:
22097 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22098 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22099 break;
22100 case WDI_DEL_TS_REQ:
22101 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22102 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22103 break;
22104 case WDI_UPD_EDCA_PRMS_REQ:
22105 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22106 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22107 break;
22108 case WDI_ADD_BA_SESSION_REQ:
22109 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22110 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22111 break;
22112 case WDI_DEL_BA_REQ:
22113 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22114 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22115 break;
22116#ifdef FEATURE_WLAN_CCX
22117 case WDI_TSM_STATS_REQ:
22118 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22119 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22120 break;
22121#endif
22122 case WDI_CH_SWITCH_REQ:
22123 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22124 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22125 break;
22126 case WDI_CONFIG_STA_REQ:
22127 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22128 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22129 break;
22130 case WDI_SET_LINK_ST_REQ:
22131 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22132 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22133 break;
22134 case WDI_GET_STATS_REQ:
22135 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22136 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22137 break;
22138 case WDI_UPDATE_CFG_REQ:
22139 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22140 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22141 break;
22142 case WDI_ADD_BA_REQ:
22143 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22144 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22145 break;
22146 case WDI_TRIGGER_BA_REQ:
22147 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22148 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22149 break;
22150 case WDI_UPD_BCON_PRMS_REQ:
22151 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22152 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22153 break;
22154 case WDI_SND_BCON_REQ:
22155 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22156 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22157 break;
22158 case WDI_ENTER_BMPS_REQ:
22159 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22160 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22161 break;
22162 case WDI_EXIT_BMPS_REQ:
22163 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22164 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22165 break;
22166 case WDI_ENTER_UAPSD_REQ:
22167 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22168 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22169 break;
22170 case WDI_UPDATE_UAPSD_PARAM_REQ:
22171 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22172 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22173 break;
22174 case WDI_CONFIGURE_RXP_FILTER_REQ:
22175 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22176 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22177 break;
22178 case WDI_SET_BEACON_FILTER_REQ:
22179 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22180 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22181 break;
22182 case WDI_REM_BEACON_FILTER_REQ:
22183 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22184 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 case WDI_SET_RSSI_THRESHOLDS_REQ:
22187 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22188 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22189 break;
22190 case WDI_HOST_OFFLOAD_REQ:
22191 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22192 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22193 break;
22194 case WDI_WOWL_ADD_BC_PTRN_REQ:
22195 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22196 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22197 break;
22198 case WDI_WOWL_DEL_BC_PTRN_REQ:
22199 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22200 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22201 break;
22202 case WDI_WOWL_ENTER_REQ:
22203 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22204 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22205 break;
22206 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22207 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22208 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22209 break;
22210 case WDI_FLUSH_AC_REQ:
22211 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22212 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22213 break;
22214 case WDI_BTAMP_EVENT_REQ:
22215 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22216 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22217 break;
22218 case WDI_KEEP_ALIVE_REQ:
22219 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22220 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22221 break;
22222 case WDI_SET_TX_PER_TRACKING_REQ:
22223 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22224 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22225 default:
22226 *ppfnReqCB = NULL;
22227 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022229 }
22230}/*WDI_ExtractRequestCBFromEvent*/
22231
22232
22233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 frame xtl is enabled for a particular STA.
22236
22237 WDI_PostAssocReq must have been called.
22238
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 @param uSTAIdx: STA index
22240
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 @see WDI_PostAssocReq
22242 @return Result of the function call
22243*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022244wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022245WDI_IsHwFrameTxTranslationCapable
22246(
22247 wpt_uint8 uSTAIdx
22248)
22249{
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 uma value*/
22252 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 ------------------------------------------------------------------------*/
22255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22256 {
22257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22258 "WDI API call before module is initialized - Fail request");
22259
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 }
22262
Jeff Johnsone7245742012-09-05 17:12:55 -070022263
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 return gWDICb.bFrameTransEnabled;
22265}/*WDI_IsHwFrameTxTranslationCapable*/
22266
22267#ifdef FEATURE_WLAN_SCAN_PNO
22268/**
22269 @brief WDI_SetPreferredNetworkList
22270
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022273
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 wdiPNOScanCb: callback for passing back the response
22275 of the Set PNO operation received from the
22276 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022277
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022279 callback
22280
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 @return Result of the function call
22282*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022284WDI_SetPreferredNetworkReq
22285(
22286 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22287 WDI_PNOScanCb wdiPNOScanCb,
22288 void* pUserData
22289)
22290{
22291 WDI_EventInfoType wdiEventData = {{0}};
22292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22293
22294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 ------------------------------------------------------------------------*/
22297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22298 {
22299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22300 "WDI API call before module is initialized - Fail request");
22301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 }
22304
22305 /*------------------------------------------------------------------------
22306 Fill in Event data and post to the Main FSM
22307 ------------------------------------------------------------------------*/
22308 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 wdiEventData.pUserData = pUserData;
22313
22314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22315}
22316
22317
22318/**
22319 @brief WDI_SetRssiFilterReq
22320
Jeff Johnsone7245742012-09-05 17:12:55 -070022321 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022323
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 wdiRssiFilterCb: callback for passing back the response
22325 of the Set RSSI Filter operation received from the
22326 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022327
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 callback
22330
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 @return Result of the function call
22332*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022334WDI_SetRssiFilterReq
22335(
22336 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22337 WDI_RssiFilterCb wdiRssiFilterCb,
22338 void* pUserData
22339)
22340{
22341 WDI_EventInfoType wdiEventData = {{0}};
22342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22343
22344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 ------------------------------------------------------------------------*/
22347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22348 {
22349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22350 "WDI API call before module is initialized - Fail request");
22351
Jeff Johnsone7245742012-09-05 17:12:55 -070022352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 }
22354
22355 /*------------------------------------------------------------------------
22356 Fill in Event data and post to the Main FSM
22357 ------------------------------------------------------------------------*/
22358 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 wdiEventData.pUserData = pUserData;
22363
22364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22365}/*WDI_SetRssiFilterReq*/
22366
22367/**
22368 @brief WDI_UpdateScanParamsReq
22369
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022371 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022372
Jeff Johnson295189b2012-06-20 16:38:30 -070022373 wdiUpdateScanParamsCb: callback for passing back the response
22374 of the Set PNO operation received from the
22375 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022376
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 callback
22379
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 @return Result of the function call
22381*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022382WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022383WDI_UpdateScanParamsReq
22384(
22385 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22386 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22387 void* pUserData
22388)
22389{
22390 WDI_EventInfoType wdiEventData = {{0}};
22391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22392
22393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 ------------------------------------------------------------------------*/
22396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22397 {
22398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22399 "WDI API call before module is initialized - Fail request");
22400
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 }
22403
22404 /*------------------------------------------------------------------------
22405 Fill in Event data and post to the Main FSM
22406 ------------------------------------------------------------------------*/
22407 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 wdiEventData.pUserData = pUserData;
22412
22413 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22414}
22415
22416/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022419
22420 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 pwdiPNOScanReqParams: pointer to the info received
22422 from upper layers
22423 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 and its size
22425
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 @return Result of the function call
22427*/
22428
22429WDI_Status
22430WDI_PackPreferredNetworkList
22431(
22432 WDI_ControlBlockType* pWDICtx,
22433 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22434 wpt_uint8** ppSendBuffer,
22435 wpt_uint16* pSize
22436)
22437{
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 wpt_uint16 usDataOffset = 0;
22440 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022441 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 /*-----------------------------------------------------------------------
22444 Get message buffer
22445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022447 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022449 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 {
22451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22452 "Unable to get send buffer in Set PNO req %x ",
22453 pwdiPNOScanReqParams);
22454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 }
22457
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022458 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22459
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 /*-------------------------------------------------------------------------
22461 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22462 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022463 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022465 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22467
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022468 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22473
22474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22477 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22478 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22479
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022480 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 {
22482 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022483 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22485
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022486 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022488 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022489
22490 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022491 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022493
22494 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022495 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022497
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022500 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022501 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22502 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22503 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22504 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022506 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022508 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022509
22510 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022511 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22513
22514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022516 pPrefNetwListParams->aNetworks[i].ssId.length,
22517 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 }
22519
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022520 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22523 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22524 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22525
22526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022528 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22530 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22531
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022532 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022534 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022536 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22538 }
22539
22540 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022541 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22543 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22544 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022546
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022547 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022549 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022550
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022551 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22553 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22554 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022556
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022557 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022559 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022560
22561 /*Set the output values*/
22562 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022564
22565 return WDI_STATUS_SUCCESS;
22566}/*WDI_PackPreferredNetworkList*/
22567
22568/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022569 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022571
22572 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 pwdiPNOScanReqParams: pointer to the info received
22574 from upper layers
22575 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 and its size
22577
Jeff Johnson295189b2012-06-20 16:38:30 -070022578 @return Result of the function call
22579*/
22580
22581WDI_Status
22582WDI_PackPreferredNetworkListNew
22583(
22584 WDI_ControlBlockType* pWDICtx,
22585 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22586 wpt_uint8** ppSendBuffer,
22587 wpt_uint16* pSize
22588)
22589{
Jeff Johnsone7245742012-09-05 17:12:55 -070022590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 wpt_uint16 usDataOffset = 0;
22592 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022593 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022595
22596 /*-----------------------------------------------------------------------
22597 Get message buffer
22598 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022600 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022602 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022603 {
22604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22605 "Unable to get send buffer in Set PNO req %x ",
22606 pwdiPNOScanReqParams);
22607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 }
22610
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022611 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
22612
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 /*-------------------------------------------------------------------------
22614 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22615 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022616 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022618 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22620
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022621 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022622 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022623 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22626
22627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22630 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22631 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22632
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022633 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 {
22635 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022636 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22638
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022639 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022641 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022642
22643 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022644 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022646
22647 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022648 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022650
22651 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022652 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022657 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
22659
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022660 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022662 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022663
22664 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022665 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22667
22668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022670 pPrefNetwListParams->aNetworks[i].ssId.length,
22671 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 }
22673
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022674 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022676 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22677 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22678 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22679
22680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022682 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22684 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22685
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022686 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022688 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022690 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22692 }
22693
22694 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022695 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022696 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22697 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22698 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022700
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022701 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022703 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022704
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022705 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22707 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22708 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022709 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022710
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022711 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022713 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022714
Jeff Johnson295189b2012-06-20 16:38:30 -070022715
22716 /*Set the output values*/
22717 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022719
22720 return WDI_STATUS_SUCCESS;
22721}/*WDI_PackPreferredNetworkListNew*/
22722
22723/**
22724 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022725
22726 @param pWDICtx: pointer to the WLAN DAL context
22727 pEventData: pointer to the event information structure
22728
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 @return Result of the function call
22730*/
22731WDI_Status
22732WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022733(
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 WDI_ControlBlockType* pWDICtx,
22735 WDI_EventInfoType* pEventData
22736)
22737{
22738 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
22739 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743
22744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 -------------------------------------------------------------------------*/
22747 if (( NULL == pEventData ) ||
22748 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
22749 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
22750 {
22751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 }
22756
22757 /*-------------------------------------------------------------------------
22758 Pack the PNO request structure based on version
22759 -------------------------------------------------------------------------*/
22760 if ( pWDICtx->wdiPNOVersion > 0 )
22761 {
22762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022763 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 pWDICtx->wdiPNOVersion);
22765
22766 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
22767 &pSendBuffer, &usSendSize);
22768 }
22769 else
22770 {
22771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022772 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 pWDICtx->wdiPNOVersion);
22774
22775 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
22776 &pSendBuffer, &usSendSize);
22777 }
22778
22779 if (( WDI_STATUS_SUCCESS != wdiStatus )||
22780 ( NULL == pSendBuffer )||( 0 == usSendSize ))
22781 {
22782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022783 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 }
22787
22788 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790
22791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22795 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022796}
22797
22798/**
22799 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070022800
22801 @param pWDICtx: pointer to the WLAN DAL context
22802 pEventData: pointer to the event information structure
22803
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 @see
22805 @return Result of the function call
22806*/
22807WDI_Status
22808WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022809(
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 WDI_ControlBlockType* pWDICtx,
22811 WDI_EventInfoType* pEventData
22812)
22813{
22814 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
22815 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 wpt_uint16 usDataOffset = 0;
22818 wpt_uint16 usSendSize = 0;
22819 wpt_uint8 ucRssiThreshold;
22820
22821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 -------------------------------------------------------------------------*/
22824 if (( NULL == pEventData ) ||
22825 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
22826 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
22827 {
22828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 }
22833
22834 /*-----------------------------------------------------------------------
22835 Get message buffer
22836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 sizeof(ucRssiThreshold),
22839 &pSendBuffer, &usDataOffset, &usSendSize))||
22840 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
22841 {
22842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22843 "Unable to get send buffer in Set PNO req %x %x %x",
22844 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
22845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 }
22848
22849 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
22850
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 wpalMemoryCopy( pSendBuffer+usDataOffset,
22852 &ucRssiThreshold,
22853 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070022854
22855 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022857
22858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22862 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022863}
22864
22865
22866/**
22867 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070022868
22869 @param pWDICtx: pointer to the WLAN DAL context
22870 pEventData: pointer to the event information structure
22871
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 @see
22873 @return Result of the function call
22874*/
22875WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053022876WDI_PackUpdateScanParamsReq
22877(
22878 WDI_ControlBlockType* pWDICtx,
22879 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22880 wpt_uint8** ppSendBuffer,
22881 wpt_uint16* pSize
22882)
22883{
22884 wpt_uint8* pSendBuffer = NULL;
22885 wpt_uint16 usDataOffset = 0;
22886 wpt_uint16 usSendSize = 0;
22887 tUpdateScanParams updateScanParams = {0};
22888
22889
22890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22891 "Begin WDI Update Scan Parameters Old Style Params");
22892 /*-----------------------------------------------------------------------
22893 Get message buffer
22894 -----------------------------------------------------------------------*/
22895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22896 sizeof(updateScanParams),
22897 &pSendBuffer, &usDataOffset, &usSendSize))||
22898 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22899 {
22900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22901 "Unable to get send buffer in Update Scan Params req %x",
22902 pwdiUpdateScanParams);
22903 WDI_ASSERT(0);
22904 return WDI_STATUS_E_FAILURE;
22905 }
22906
22907 //
22908 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22909 //
22910
22911 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22912 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22913
22914 updateScanParams.ucChannelCount =
22915 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22916 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22917 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
22918 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
22919
22920 wpalMemoryCopy( updateScanParams.aChannels,
22921 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
22922 updateScanParams.ucChannelCount);
22923
22924
22925 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
22926 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
22927 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
22928 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
22929 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
22930
22931 wpalMemoryCopy( pSendBuffer+usDataOffset,
22932 &updateScanParams,
22933 sizeof(updateScanParams));
22934
22935 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
22936 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
22937
22938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22939 "End Update Scan Parameters Old Style");
22940
22941 /*Set the output values*/
22942 *ppSendBuffer = pSendBuffer;
22943 *pSize = usSendSize;
22944
22945 return WDI_STATUS_SUCCESS;
22946}
22947
22948/**
22949 @brief Process Update Scan Params function
22950
22951 @param pWDICtx: pointer to the WLAN DAL context
22952 pEventData: pointer to the event information structure
22953
22954 @see
22955 @return Result of the function call
22956*/
22957WDI_Status
22958WDI_PackUpdateScanParamsReqEx
22959(
22960 WDI_ControlBlockType* pWDICtx,
22961 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
22962 wpt_uint8** ppSendBuffer,
22963 wpt_uint16* pSize
22964)
22965{
22966 wpt_uint8* pSendBuffer = NULL;
22967 wpt_uint16 usDataOffset = 0;
22968 wpt_uint16 usSendSize = 0;
22969 tUpdateScanParamsEx updateScanParams = {0};
22970
22971
22972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22973 "Begin WDI Update Scan Parameters New Style Params");
22974 /*-----------------------------------------------------------------------
22975 Get message buffer
22976 -----------------------------------------------------------------------*/
22977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
22978 sizeof(updateScanParams),
22979 &pSendBuffer, &usDataOffset, &usSendSize))||
22980 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
22981 {
22982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22983 "Unable to get send buffer in Update Scan Params Ex req %x",
22984 pwdiUpdateScanParams);
22985 WDI_ASSERT(0);
22986 return WDI_STATUS_E_FAILURE;
22987 }
22988
22989 //
22990 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
22991 //
22992
22993 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
22994 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
22995
22996 updateScanParams.ucChannelCount =
22997 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
22998 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
22999 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23000 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23001
23002 wpalMemoryCopy( updateScanParams.aChannels,
23003 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23004 updateScanParams.ucChannelCount);
23005
23006
23007 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23008 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23009 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23010 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23011 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23012
23013 wpalMemoryCopy( pSendBuffer+usDataOffset,
23014 &updateScanParams,
23015 sizeof(updateScanParams));
23016
23017 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23018 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23019
23020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23021 "End Update Scan Parameters New Style");
23022
23023 /*Set the output values*/
23024 *ppSendBuffer = pSendBuffer;
23025 *pSize = usSendSize;
23026
23027 return WDI_STATUS_SUCCESS;
23028}
23029
23030/**
23031 @brief Process Update Scan Params function
23032
23033 @param pWDICtx: pointer to the WLAN DAL context
23034 pEventData: pointer to the event information structure
23035
23036 @see
23037 @return Result of the function call
23038*/
23039WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023040WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023041(
Jeff Johnson295189b2012-06-20 16:38:30 -070023042 WDI_ControlBlockType* pWDICtx,
23043 WDI_EventInfoType* pEventData
23044)
23045{
23046 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23047 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023050 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023051
23052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 -------------------------------------------------------------------------*/
23055 if (( NULL == pEventData ) ||
23056 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23057 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23058 {
23059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 }
23064
23065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23066 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023067
23068 //
23069 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23070 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023071 if ( pWDICtx->wlanVersion.revision < 1 )
23072 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023073 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023074 &pSendBuffer, &usSendSize);
23075 }
23076 else
23077 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023078 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23079 &pSendBuffer, &usSendSize);
23080 }
23081
23082 if(WDI_STATUS_SUCCESS != wdiStatus)
23083 {
23084 //memory allocation failed
23085 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023086 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023087
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023092 wdiUpdateScanParamsCb, pEventData->pUserData,
23093 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023094}
23095
23096/**
23097 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023098
23099 @param pWDICtx: pointer to the WLAN DAL context
23100 pEventData: pointer to the event information structure
23101
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 @see
23103 @return Result of the function call
23104*/
23105WDI_Status
23106WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023107(
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 WDI_ControlBlockType* pWDICtx,
23109 WDI_EventInfoType* pEventData
23110)
23111{
23112 WDI_LowLevelIndType wdiInd;
23113 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23114
23115
23116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 -------------------------------------------------------------------------*/
23119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23120 ( NULL == pEventData->pEventData ))
23121 {
23122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 }
23127
23128 /*-------------------------------------------------------------------------
23129 Extract indication and send it to UMAC
23130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23132 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 sizeof(tPrefNetwFoundParams));
23134
23135 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023136 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023137
23138 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23139
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023143
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23145 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23147
23148 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23149 prefNetwFoundInd.prefNetwFoundParams.rssi;
23150
23151 // DEBUG
23152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23153 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23154 wdiInd.wdiIndicationType,
23155 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23156 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23157
23158 /*Notify UMAC*/
23159 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
Jeff Johnsone7245742012-09-05 17:12:55 -070023160
23161 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023162}
23163
23164/**
23165 @brief Process PNO Rsp function (called when a
23166 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023167
23168 @param pWDICtx: pointer to the WLAN DAL context
23169 pEventData: pointer to the event information structure
23170
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 @see
23172 @return Result of the function call
23173*/
23174WDI_Status
23175WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023176(
Jeff Johnson295189b2012-06-20 16:38:30 -070023177 WDI_ControlBlockType* pWDICtx,
23178 WDI_EventInfoType* pEventData
23179)
23180{
23181 WDI_Status wdiStatus;
23182 eHalStatus halStatus;
23183 WDI_PNOScanCb wdiPNOScanCb = NULL;
23184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23185
23186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 -------------------------------------------------------------------------*/
23189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23190 ( NULL == pEventData->pEventData ))
23191 {
23192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 }
23197
23198
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023200
23201 /*-------------------------------------------------------------------------
23202 Extract response and send it to UMAC
23203 -------------------------------------------------------------------------*/
23204 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023206
23207 /*Notify UMAC*/
23208 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23209
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023211}/*WDI_ProcessSetPreferredNetworkRsp*/
23212
23213/**
23214 @brief Process RSSI Filter Rsp function (called when a
23215 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023216
23217 @param pWDICtx: pointer to the WLAN DAL context
23218 pEventData: pointer to the event information structure
23219
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 @see
23221 @return Result of the function call
23222*/
23223WDI_Status
23224WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023225(
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 WDI_ControlBlockType* pWDICtx,
23227 WDI_EventInfoType* pEventData
23228)
23229{
23230 WDI_Status wdiStatus;
23231 eHalStatus halStatus;
23232 WDI_RssiFilterCb wdiRssiFilterCb;
23233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23234
23235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 -------------------------------------------------------------------------*/
23238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23239 ( NULL == pEventData->pEventData ))
23240 {
23241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 }
23246
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023248
23249 /*-------------------------------------------------------------------------
23250 Extract response and send it to UMAC
23251 -------------------------------------------------------------------------*/
23252 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023254
23255 /*Notify UMAC*/
23256 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23257
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259}/*WDI_ProcessSetRssiFilterRsp*/
23260
23261/**
23262 @brief Process Update Scan Params Rsp function (called when a
23263 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023264
23265 @param pWDICtx: pointer to the WLAN DAL context
23266 pEventData: pointer to the event information structure
23267
Jeff Johnson295189b2012-06-20 16:38:30 -070023268 @see
23269 @return Result of the function call
23270*/
23271WDI_Status
23272WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023273(
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 WDI_ControlBlockType* pWDICtx,
23275 WDI_EventInfoType* pEventData
23276)
23277{
23278 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023280 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23283
23284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023286 -------------------------------------------------------------------------*/
23287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23288 ( NULL == pEventData->pEventData ))
23289 {
23290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 }
23295
23296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023297 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023298
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023300
23301 /*-------------------------------------------------------------------------
23302 Extract response and send it to UMAC
23303 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23305 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 sizeof(halUpdScanParams.status));
23307
23308 uStatus = halUpdScanParams.status;
23309
23310 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312
23313 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023315
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023317
23318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 halUpdScanParams.status);
23321
23322 /*Notify UMAC*/
23323 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23324
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326}
23327#endif // FEATURE_WLAN_SCAN_PNO
23328
23329#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023331WDI_8023MulticastListReq
23332(
23333 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23334 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23335 void* pUserData
23336)
23337{
23338 WDI_EventInfoType wdiEventData;
23339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23340
23341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023342 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023343
23344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023346 ------------------------------------------------------------------------*/
23347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23348 {
23349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23350 "WDI API call before module is initialized - Fail request");
23351
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 }
23354
23355 /*------------------------------------------------------------------------
23356 Fill in Event data and post to the Main FSM
23357 ------------------------------------------------------------------------*/
23358 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 wdiEventData.pUserData = pUserData;
23363
23364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23365}
23366
Jeff Johnsone7245742012-09-05 17:12:55 -070023367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023368WDI_ReceiveFilterSetFilterReq
23369(
23370 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23371 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23372 void* pUserData
23373)
23374{
23375 WDI_EventInfoType wdiEventData;
23376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23377
23378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023379 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023380
23381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 ------------------------------------------------------------------------*/
23384 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23385 {
23386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23387 "WDI API call before module is initialized - Fail request");
23388
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 }
23391
23392 /*------------------------------------------------------------------------
23393 Fill in Event data and post to the Main FSM
23394 ------------------------------------------------------------------------*/
23395 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23397 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23398 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 wdiEventData.pUserData = pUserData;
23402
23403
23404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23405}
23406
Jeff Johnsone7245742012-09-05 17:12:55 -070023407WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023408WDI_FilterMatchCountReq
23409(
23410 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23411 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23412 void* pUserData
23413)
23414{
23415 WDI_EventInfoType wdiEventData;
23416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23417
23418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023419 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023420
23421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 ------------------------------------------------------------------------*/
23424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23425 {
23426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23427 "WDI API call before module is initialized - Fail request");
23428
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 }
23431
23432 /*------------------------------------------------------------------------
23433 Fill in Event data and post to the Main FSM
23434 ------------------------------------------------------------------------*/
23435 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 wdiEventData.pUserData = pUserData;
23440
23441
23442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23443}
23444
Jeff Johnsone7245742012-09-05 17:12:55 -070023445WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023446WDI_ReceiveFilterClearFilterReq
23447(
23448 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23449 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23450 void* pUserData
23451)
23452{
23453 WDI_EventInfoType wdiEventData;
23454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23455
23456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023457 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
23459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 ------------------------------------------------------------------------*/
23462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23463 {
23464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23465 "WDI API call before module is initialized - Fail request");
23466
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 }
23469
23470 /*------------------------------------------------------------------------
23471 Fill in Event data and post to the Main FSM
23472 ------------------------------------------------------------------------*/
23473 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 wdiEventData.pUserData = pUserData;
23478
23479
23480 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23481}
23482
23483/**
23484 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023485
23486 @param pWDICtx: pointer to the WLAN DAL context
23487 pEventData: pointer to the event information structure
23488
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 @see
23490 @return Result of the function call
23491*/
23492WDI_Status
23493WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023494(
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 WDI_ControlBlockType* pWDICtx,
23496 WDI_EventInfoType* pEventData
23497)
23498{
23499 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23500 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 wpt_uint16 usDataOffset = 0;
23503 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023504 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023506 wpt_uint8 ucCurrentBSSSesIdx = 0;
23507 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023508
23509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023510 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023511
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023512 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23513 if( NULL == pRcvFltMcAddrListType )
23514 {
23515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23516 "Failed to alloc in WDI_Process8023MulticastListReq");
23517 return WDI_STATUS_E_FAILURE;
23518 }
23519
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 -------------------------------------------------------------------------*/
23523 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023524 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023525 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23528 {
23529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023530 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023531 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 return WDI_STATUS_E_FAILURE;
23534 }
23535
23536 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23537 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23538 &pBSSSes);
23539 if ( NULL == pBSSSes )
23540 {
23541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023542 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023543 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 }
23546
23547 /*-----------------------------------------------------------------------
23548 Get message buffer
23549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23551 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 sizeof(tHalRcvFltMcAddrListType),
23553 &pSendBuffer, &usDataOffset, &usSendSize))||
23554 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23555 {
23556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23557 "Unable to get send buffer in "
23558 "WDI_Process8023MulticastListReq() %x %x %x",
23559 pEventData, pwdiFltPktSetMcListReqParamsType,
23560 wdi8023MulticastListCb);
23561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 }
23564
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023565 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023566 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023567 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023569 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23571 sizeof(tSirMacAddr));
23572 }
23573
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023574 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023576 pRcvFltMcAddrListType,
23577 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023578
23579 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023581
23582
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023583 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023590}
23591
23592/**
23593 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023594
23595 @param pWDICtx: pointer to the WLAN DAL context
23596 pEventData: pointer to the event information structure
23597
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 @see
23599 @return Result of the function call
23600*/
23601WDI_Status
23602WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023603(
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 WDI_ControlBlockType* pWDICtx,
23605 WDI_EventInfoType* pEventData
23606)
23607{
23608 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23609 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 wpt_uint16 usDataOffset = 0;
23612 wpt_uint16 usSendSize = 0;
23613 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023614 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 wpt_uint8 ucCurrentBSSSesIdx = 0;
23617 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023618 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
23619 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620
23621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023622 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023623
23624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 -------------------------------------------------------------------------*/
23627 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023628 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070023629 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
23632 {
23633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 return WDI_STATUS_E_FAILURE;
23637 }
23638
23639 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23640 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
23641 &pBSSSes);
23642 if ( NULL == pBSSSes )
23643 {
23644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023645 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 }
23648
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023649 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
23650 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023651
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023652 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
23653 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23654 * sizeof(tHalSessionizedRcvPktFilterCfgType));
23655
23656 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
23657 usSessRcvPktFilterCfgSize);
23658
23659 if(NULL == pSessRcvPktFilterCfg)
23660 {
23661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23662 "%s: Failed to allocate memory for "
23663 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023664 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023665 WDI_ASSERT(0);
23666 return WDI_STATUS_E_FAILURE;
23667 }
23668
23669 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
23670
23671 /*-----------------------------------------------------------------------
23672 Get message buffer
23673 -----------------------------------------------------------------------*/
23674
23675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
23676 usSessRcvPktFilterCfgSize,
23677 &pSendBuffer, &usDataOffset, &usSendSize))||
23678 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
23679 {
23680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23681 "Unable to get send buffer in "
23682 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23683 pEventData, pwdiSetRcvPktFilterReqInfo,
23684 wdiReceiveFilterSetFilterCb);
23685 WDI_ASSERT(0);
23686 wpalMemoryFree(pSessRcvPktFilterCfg);
23687 return WDI_STATUS_E_FAILURE;
23688 }
23689
23690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23691 "UsData Off %d UsSend %d cfg %d",usDataOffset,
23692 usSendSize,pSessRcvPktFilterCfg);
23693
23694 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23695 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23696 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23697 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
23698
23699 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
23700
23701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23702 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
23703 pSessRcvPktFilterCfg->filterType);
23704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23705 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
23706 pSessRcvPktFilterCfg->coleasceTime);
23707
23708 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
23709 {
23710 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
23711 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23712 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
23713 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23714 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
23715 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23716 pSessRcvPktFilterCfg->paramsData[i].dataLength =
23717 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
23718
23719 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
23720 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23721 8);
23722 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
23723 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23724 8);
23725
23726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23727 "Out:Proto %d Comp Flag %d \n",
23728 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
23729 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
23730
23731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23732 "Data Offset %d Data Len %d\n",
23733 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
23734 pSessRcvPktFilterCfg->paramsData[i].dataLength);
23735
23736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23737 "CData: %d:%d:%d:%d:%d:%d\n",
23738 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
23739 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
23740 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
23741 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
23742 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
23743 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
23744
23745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23746 "MData: %d:%d:%d:%d:%d:%d\n",
23747 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
23748 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
23749 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
23750 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
23751 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
23752 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
23753 }
23754
23755 wpalMemoryCopy( pSendBuffer+usDataOffset,
23756 pSessRcvPktFilterCfg,
23757 usSessRcvPktFilterCfgSize);
23758
23759
23760 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23761 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
23762
23763 wpalMemoryFree(pSessRcvPktFilterCfg);
23764
23765 }
23766 /*If SLM_SESSIONIZATION is not supported then do this */
23767 else
23768 {
23769 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
23770 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23771 * sizeof(tHalRcvPktFilterParams));
23772
23773 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 usRcvPktFilterCfgSize);
23775
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023776 if(NULL == pRcvPktFilterCfg)
23777 {
23778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23779 "%s: Failed to allocate memory for "
23780 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023781 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023782 WDI_ASSERT(0);
23783 return WDI_STATUS_E_FAILURE;
23784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023785
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023786 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023788 /*-----------------------------------------------------------------------
23789 Get message buffer
23790 -----------------------------------------------------------------------*/
23791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 usRcvPktFilterCfgSize,
23793 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023794 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
23795 {
23796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 "Unable to get send buffer in "
23798 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
23799 pEventData, pwdiSetRcvPktFilterReqInfo,
23800 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023801 WDI_ASSERT(0);
23802 wpalMemoryFree(pRcvPktFilterCfg);
23803 return WDI_STATUS_E_FAILURE;
23804 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023805
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 usSendSize,usRcvPktFilterCfgSize);
23809
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023810 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
23811 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
23812 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
23813 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070023814
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070023821
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023822 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
23823 {
23824 pRcvPktFilterCfg->paramsData[i].protocolLayer =
23825 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
23826 pRcvPktFilterCfg->paramsData[i].cmpFlag =
23827 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
23828 pRcvPktFilterCfg->paramsData[i].dataOffset =
23829 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
23830 pRcvPktFilterCfg->paramsData[i].dataLength =
23831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070023832
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023833 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
23835 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023836 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070023837 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
23838 8);
23839
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 pRcvPktFilterCfg->paramsData[i].cmpFlag);
23844
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23846 "Data Offset %d Data Len %d\n",
23847 pRcvPktFilterCfg->paramsData[i].dataOffset,
23848 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023849
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23851 "CData: %d:%d:%d:%d:%d:%d\n",
23852 pRcvPktFilterCfg->paramsData[i].compareData[0],
23853 pRcvPktFilterCfg->paramsData[i].compareData[1],
23854 pRcvPktFilterCfg->paramsData[i].compareData[2],
23855 pRcvPktFilterCfg->paramsData[i].compareData[3],
23856 pRcvPktFilterCfg->paramsData[i].compareData[4],
23857 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070023858
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23860 "MData: %d:%d:%d:%d:%d:%d\n",
23861 pRcvPktFilterCfg->paramsData[i].dataMask[0],
23862 pRcvPktFilterCfg->paramsData[i].dataMask[1],
23863 pRcvPktFilterCfg->paramsData[i].dataMask[2],
23864 pRcvPktFilterCfg->paramsData[i].dataMask[3],
23865 pRcvPktFilterCfg->paramsData[i].dataMask[4],
23866 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
23867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023868
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023869 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 pRcvPktFilterCfg,
23871 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023872
23873
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023874 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
23875 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023878 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023879 wpalMemoryFree(pRcvPktFilterCfg);
23880 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023887}
23888
23889/**
23890 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023891
23892 @param pWDICtx: pointer to the WLAN DAL context
23893 pEventData: pointer to the event information structure
23894
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 @see
23896 @return Result of the function call
23897*/
23898WDI_Status
23899WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023900(
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 WDI_ControlBlockType* pWDICtx,
23902 WDI_EventInfoType* pEventData
23903)
23904{
23905 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
23906 NULL;
23907 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
23908 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 wpt_uint16 usDataOffset = 0;
23911 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023912 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
23913 wpt_uint8 ucCurrentBSSSesIdx = 0;
23914 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915
23916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023917 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023918
23919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023921 -------------------------------------------------------------------------*/
23922 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
23927 {
23928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 }
23933
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023934 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23935 pwdiRcvFltPktMatchCntReqParamsType->bssId,
23936 &pBSSSes);
23937 if ( NULL == pBSSSes )
23938 {
23939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023940 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023941 return WDI_STATUS_E_FAILURE;
23942 }
23943
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 /*-----------------------------------------------------------------------
23945 Get message buffer
23946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23948 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023949 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023951 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 {
23953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23954 "Unable to get send buffer in "
23955 "WDI_ProcessFilterMatchCountReq() %x %x %x",
23956 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
23957 wdiFilterMatchCountCb);
23958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 }
23961
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070023962 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
23963 wpalMemoryCopy( pSendBuffer+usDataOffset,
23964 &rcvFltPktMatchCntReqParam,
23965 sizeof(rcvFltPktMatchCntReqParam));
23966
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 //
23968 // Don't need to fill send buffer other than header
23969 //
23970 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023972
23973
23974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23978 wdiFilterMatchCountCb,
23979 pEventData->pUserData,
23980 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023981}
23982
23983/**
23984 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023985
23986 @param pWDICtx: pointer to the WLAN DAL context
23987 pEventData: pointer to the event information structure
23988
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 @see
23990 @return Result of the function call
23991*/
23992WDI_Status
23993WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023994(
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 WDI_ControlBlockType* pWDICtx,
23996 WDI_EventInfoType* pEventData
23997)
Jeff Johnsone7245742012-09-05 17:12:55 -070023998{
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24000 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 wpt_uint16 usDataOffset = 0;
24003 wpt_uint16 usSendSize = 0;
24004 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024005 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007
24008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024009 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024010
24011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 -------------------------------------------------------------------------*/
24014 if (( NULL == pEventData ) ||
24015 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24016 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24019 {
24020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WDI_STATUS_E_FAILURE;
24024 }
24025
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024026 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24028 &pBSSSes);
24029 if ( NULL == pBSSSes )
24030 {
24031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024032 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 }
24035
24036 /*-----------------------------------------------------------------------
24037 Get message buffer
24038 -----------------------------------------------------------------------*/
24039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024041 sizeof(tHalRcvFltPktClearParam),
24042 &pSendBuffer, &usDataOffset, &usSendSize))||
24043 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24044 {
24045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24046 "Unable to get send buffer in "
24047 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24048 pEventData, pwdiRcvFltPktClearReqParamsType,
24049 wdiRcvFltPktClearFilterCb);
24050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 }
24053
24054
24055 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059
Jeff Johnsone7245742012-09-05 17:12:55 -070024060 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24061 wpalMemoryCopy( pSendBuffer+usDataOffset,
24062 &rcvFltPktClearParam,
24063 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024064
24065 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024066 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024067
24068
24069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024075}
24076
24077/**
24078 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024079
24080 @param pWDICtx: pointer to the WLAN DAL context
24081 pEventData: pointer to the event information structure
24082
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 @see
24084 @return Result of the function call
24085*/
24086WDI_Status
24087WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024088(
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 WDI_ControlBlockType* pWDICtx,
24090 WDI_EventInfoType* pEventData
24091)
24092{
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 eHalStatus halStatus;
24094 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024095 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24096 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24098
24099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024100 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024101
24102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 -------------------------------------------------------------------------*/
24105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24106 ( NULL == pEventData->pEventData ))
24107 {
24108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 }
24113
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115
24116 /*-------------------------------------------------------------------------
24117 Extract response and send it to UMAC
24118 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024119 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24120 {
24121 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24122 pEventData->pEventData,
24123 sizeof(halRcvFltPktSetMcListRsp));
24124
24125 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24126 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24127 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24128 halRcvFltPktSetMcListRsp.bssIdx;
24129 }
24130 else
24131 {
24132 halStatus = *((eHalStatus*)pEventData->pEventData);
24133 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24134 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024135
24136 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024137 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024138
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024140}
24141
24142/**
24143 @brief Process Set Rsp function (called when a
24144 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024145
24146 @param pWDICtx: pointer to the WLAN DAL context
24147 pEventData: pointer to the event information structure
24148
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 @see
24150 @return Result of the function call
24151*/
24152WDI_Status
24153WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024154(
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 WDI_ControlBlockType* pWDICtx,
24156 WDI_EventInfoType* pEventData
24157)
24158{
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 eHalStatus halStatus;
24160 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024161 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24162 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24164
24165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024166 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024167
24168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 -------------------------------------------------------------------------*/
24171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24172 ( NULL == pEventData->pEventData ))
24173 {
24174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 }
24179
24180 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024182
24183 /*-------------------------------------------------------------------------
24184 Extract response and send it to UMAC
24185 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024186 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24187 {
24188 wpalMemoryCopy( &halSetPktFilterRspParams,
24189 pEventData->pEventData,
24190 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024191
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024192 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24193 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24194 }
24195 else
24196 {
24197 halStatus = *((eHalStatus*)pEventData->pEventData);
24198 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024201 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204}
24205
24206/**
24207 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024208
24209 @param pWDICtx: pointer to the WLAN DAL context
24210 pEventData: pointer to the event information structure
24211
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 @see
24213 @return Result of the function call
24214*/
24215WDI_Status
24216WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024217(
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 WDI_ControlBlockType* pWDICtx,
24219 WDI_EventInfoType* pEventData
24220)
24221{
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024224 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24225 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226
24227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24228
24229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024230 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024231
24232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 -------------------------------------------------------------------------*/
24235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24236 ( NULL == pEventData->pEventData ))
24237 {
24238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 }
24243
Jeff Johnsone7245742012-09-05 17:12:55 -070024244 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024245
24246 /*-------------------------------------------------------------------------
24247 Extract response and send it to UMAC
24248 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024249 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24250 {
24251 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24252 pEventData->pEventData,
24253 sizeof(halRcvFltrPktMatachRsp));
24254
24255 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24256 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24257 }
24258 else
24259 {
24260 halStatus = *((eHalStatus*)pEventData->pEventData);
24261 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24262 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024263
24264 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024265 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024266
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268}
24269
24270/**
24271 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024272
24273 @param pWDICtx: pointer to the WLAN DAL context
24274 pEventData: pointer to the event information structure
24275
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 @see
24277 @return Result of the function call
24278*/
24279WDI_Status
24280WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024281(
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 WDI_ControlBlockType* pWDICtx,
24283 WDI_EventInfoType* pEventData
24284)
24285{
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 eHalStatus halStatus;
24287 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024288 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24289 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24291
24292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024293 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024294
24295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 -------------------------------------------------------------------------*/
24298 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24299 ( NULL == pEventData->pEventData ))
24300 {
24301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 }
24306
24307 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309
24310 /*-------------------------------------------------------------------------
24311 Extract response and send it to UMAC
24312 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024313 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24314 {
24315 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24316 pEventData->pEventData,
24317 sizeof(halRcvFltPktClearRspMsg));
24318
24319 wdiRcvFltPktClearRspParamsType.wdiStatus =
24320 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24321 wdiRcvFltPktClearRspParamsType.bssIdx =
24322 halRcvFltPktClearRspMsg.bssIdx;
24323 }
24324 else
24325 {
24326 halStatus = *((eHalStatus*)pEventData->pEventData);
24327 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24328 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024329
24330 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024331 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024332
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334}
24335#endif // WLAN_FEATURE_PACKET_FILTERING
24336
24337/**
24338 @brief Process Shutdown Rsp function
24339 There is no shutdown response comming from HAL
24340 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024341
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024344
24345 @see
24346 @return Result of the function call
24347*/
24348WDI_Status
24349WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024350(
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 WDI_ControlBlockType* pWDICtx,
24352 WDI_EventInfoType* pEventData
24353)
24354{
24355 /*There is no shutdown response comming from HAL - function just kept for
24356 simmetry */
24357 WDI_ASSERT(0);
24358 return WDI_STATUS_SUCCESS;
24359}/*WDI_ProcessShutdownRsp*/
24360
24361/**
24362 @brief WDI_SetPowerParamsReq
24363
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024366
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 wdiPowerParamsCb: callback for passing back the response
24368 of the Set Power Params operation received from the
24369 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024370
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 callback
24373
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 @return Result of the function call
24375*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024377WDI_SetPowerParamsReq
24378(
24379 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24380 WDI_SetPowerParamsCb wdiPowerParamsCb,
24381 void* pUserData
24382)
24383{
24384 WDI_EventInfoType wdiEventData;
24385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24386
24387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 ------------------------------------------------------------------------*/
24390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24391 {
24392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24393 "WDI API call before module is initialized - Fail request");
24394
Jeff Johnsone7245742012-09-05 17:12:55 -070024395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 }
24397
24398 /*------------------------------------------------------------------------
24399 Fill in Event data and post to the Main FSM
24400 ------------------------------------------------------------------------*/
24401 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 wdiEventData.pUserData = pUserData;
24406
24407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24408}/*WDI_SetPowerParamsReq*/
24409
24410/**
24411 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024412
24413 @param pWDICtx: pointer to the WLAN DAL context
24414 pEventData: pointer to the event information structure
24415
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 @see
24417 @return Result of the function call
24418*/
24419WDI_Status
24420WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024421(
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 WDI_ControlBlockType* pWDICtx,
24423 WDI_EventInfoType* pEventData
24424)
24425{
24426 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24427 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 wpt_uint16 usDataOffset = 0;
24430 wpt_uint16 usSendSize = 0;
24431 tSetPowerParamsType powerParams;
24432
24433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 -------------------------------------------------------------------------*/
24436 if (( NULL == pEventData ) ||
24437 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24438 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24439 {
24440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 }
24445
24446 /*-----------------------------------------------------------------------
24447 Get message buffer
24448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 sizeof(powerParams),
24451 &pSendBuffer, &usDataOffset, &usSendSize))||
24452 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24453 {
24454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24455 "Unable to get send buffer in Set PNO req %x %x %x",
24456 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 }
24460
24461 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24464
24465 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24468
24469 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24472
24473 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24476
24477 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24480
24481 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 powerParams.uBETInterval =
24483 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
Jeff Johnsone7245742012-09-05 17:12:55 -070024485
24486 wpalMemoryCopy( pSendBuffer+usDataOffset,
24487 &powerParams,
24488 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024489
24490 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024492
24493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24497 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024498}
24499
24500/**
24501 @brief Process Power Params Rsp function (called when a
24502 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024503
24504 @param pWDICtx: pointer to the WLAN DAL context
24505 pEventData: pointer to the event information structure
24506
Jeff Johnson295189b2012-06-20 16:38:30 -070024507 @see
24508 @return Result of the function call
24509*/
24510WDI_Status
24511WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024512(
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 WDI_ControlBlockType* pWDICtx,
24514 WDI_EventInfoType* pEventData
24515)
24516{
24517 WDI_Status wdiStatus;
24518 eHalStatus halStatus;
24519 WDI_SetPowerParamsCb wdiPowerParamsCb;
24520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24521
24522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 -------------------------------------------------------------------------*/
24525 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24526 ( NULL == pEventData->pEventData ))
24527 {
24528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024529 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 }
24533
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535
24536 /*-------------------------------------------------------------------------
24537 Extract response and send it to UMAC
24538 -------------------------------------------------------------------------*/
24539 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024541
24542 /*Notify UMAC*/
24543 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24544
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024546}/*WDI_ProcessSetPowerParamsRsp*/
24547
24548#ifdef WLAN_FEATURE_GTK_OFFLOAD
24549/**
24550 @brief WDI_GTKOffloadReq will be called when the upper MAC
24551 wants to set GTK Rekey Counter while in power save. Upon
24552 the call of this API the WLAN DAL will pack and send a
24553 HAL GTK offload request message to the lower RIVA
24554 sub-system if DAL is in state STARTED.
24555
24556 In state BUSY this request will be queued. Request won't
24557 be allowed in any other state.
24558
24559 WDI_PostAssocReq must have been called.
24560
24561 @param pwdiGtkOffloadParams: the GTK offload as specified
24562 by the Device Interface
24563
24564 wdiGtkOffloadCb: callback for passing back the response
24565 of the GTK offload operation received from the device
24566
24567 pUserData: user data will be passed back with the
24568 callback
24569
24570 @see WDI_PostAssocReq
24571 @return Result of the function call
24572*/
24573WDI_Status
24574WDI_GTKOffloadReq
24575(
24576 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24577 WDI_GtkOffloadCb wdiGtkOffloadCb,
24578 void* pUserData
24579)
24580{
24581 WDI_EventInfoType wdiEventData = {0};
24582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24583
24584 /*------------------------------------------------------------------------
24585 Sanity Check
24586 ------------------------------------------------------------------------*/
24587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24588 {
24589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24590 "WDI API call before module is initialized - Fail request");
24591
24592 return WDI_STATUS_E_NOT_ALLOWED;
24593 }
24594
24595 /*------------------------------------------------------------------------
24596 Fill in Event data and post to the Main FSM
24597 ------------------------------------------------------------------------*/
24598 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24599 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024600 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24602 wdiEventData.pUserData = pUserData;
24603
24604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24605}
24606
24607
24608/**
24609 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24610 MAC wants to get GTK Rekey Counter while in power save.
24611 Upon the call of this API the WLAN DAL will pack and
24612 send a HAL GTK offload request message to the lower RIVA
24613 sub-system if DAL is in state STARTED.
24614
24615 In state BUSY this request will be queued. Request won't
24616 be allowed in any other state.
24617
24618 WDI_PostAssocReq must have been called.
24619
24620 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
24621 Information Message as specified by the
24622 Device Interface
24623
24624 wdiGtkOffloadGetInfoCb: callback for passing back the
24625 response of the GTK offload operation received from the
24626 device
24627
24628 pUserData: user data will be passed back with the
24629 callback
24630
24631 @see WDI_PostAssocReq
24632 @return Result of the function call
24633*/
24634WDI_Status
24635WDI_GTKOffloadGetInfoReq
24636(
24637 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
24638 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
24639 void* pUserData
24640)
24641{
24642 WDI_EventInfoType wdiEventData = {0};
24643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24644
24645 /*------------------------------------------------------------------------
24646 Sanity Check
24647 ------------------------------------------------------------------------*/
24648 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24649 {
24650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24651 "WDI API call before module is initialized - Fail request");
24652
24653 return WDI_STATUS_E_NOT_ALLOWED;
24654 }
24655
24656 /*------------------------------------------------------------------------
24657 Fill in Event data and post to the Main FSM
24658 ------------------------------------------------------------------------*/
24659 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
24660 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
24661 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
24662 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
24663 wdiEventData.pUserData = pUserData;
24664
24665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24666}
24667
24668
24669/**
24670 @brief Process set GTK Offload Request function
24671
24672 @param pWDICtx: pointer to the WLAN DAL context
24673 pEventData: pointer to the event information structure
24674
24675 @see
24676 @return Result of the function call
24677*/
24678WDI_Status
24679WDI_ProcessGTKOffloadReq
24680(
24681 WDI_ControlBlockType* pWDICtx,
24682 WDI_EventInfoType* pEventData
24683)
24684{
24685 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
24686 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
24687 wpt_uint8* pSendBuffer = NULL;
24688 wpt_uint16 usDataOffset = 0;
24689 wpt_uint16 usSendSize = 0;
24690 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024691 wpt_uint8 ucCurrentSessionId = 0;
24692 WDI_BSSSessionType* pBSSSes = NULL;
24693
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24695
24696 /*-------------------------------------------------------------------------
24697 Sanity check
24698 -------------------------------------------------------------------------*/
24699 if (( NULL == pEventData ) ||
24700 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
24701 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
24702 {
24703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 WDI_ASSERT(0);
24706 return WDI_STATUS_E_FAILURE;
24707 }
24708
24709 /*-----------------------------------------------------------------------
24710 Get message buffer
24711 -----------------------------------------------------------------------*/
24712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
24713 sizeof(gtkOffloadReqParams),
24714 &pSendBuffer, &usDataOffset, &usSendSize))||
24715 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
24716 {
24717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24718 "Unable to get send buffer in GTK offload req %x %x %x",
24719 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
24720 WDI_ASSERT(0);
24721 return WDI_STATUS_E_FAILURE;
24722 }
24723
24724 //
24725 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
24726 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024727 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24728 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
24729 &pBSSSes);
24730 if ( NULL == pBSSSes )
24731 {
24732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024733 " %s : Association for this BSSID does not exist", __func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024734 return WDI_STATUS_E_FAILURE;
24735 }
24736
24737 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
24738
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
24740 // Copy KCK
24741 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
24742 // Copy KEK
24743 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
24744 // Copy KeyReplayCounter
24745 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
24746
24747 wpalMemoryCopy( pSendBuffer+usDataOffset,
24748 &gtkOffloadReqParams,
24749 sizeof(gtkOffloadReqParams));
24750
24751 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
24752 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
24753
24754 /*-------------------------------------------------------------------------
24755 Send Get STA Request to HAL
24756 -------------------------------------------------------------------------*/
24757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24758 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
24759}
24760
24761
24762/**
24763 @brief Process GTK Offload Get Information Request function
24764
24765 @param pWDICtx: pointer to the WLAN DAL context
24766 pEventData: pointer to the event information structure
24767
24768 @see
24769 @return Result of the function call
24770*/
24771WDI_Status
24772WDI_ProcessGTKOffloadGetInfoReq
24773(
24774 WDI_ControlBlockType* pWDICtx,
24775 WDI_EventInfoType* pEventData
24776)
24777{
24778 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
24779 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
24780 wpt_uint8* pSendBuffer = NULL;
24781 wpt_uint16 usDataOffset = 0;
24782 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024783 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
24784 wpt_uint8 ucCurrentSessionId = 0;
24785 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024786
24787 /*-------------------------------------------------------------------------
24788 Sanity check
24789 -------------------------------------------------------------------------*/
24790 if (( NULL == pEventData ) ||
24791 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
24792 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
24793 {
24794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 WDI_ASSERT(0);
24797 return WDI_STATUS_E_FAILURE;
24798 }
24799
24800 /*-----------------------------------------------------------------------
24801 Get message buffer
24802 -----------------------------------------------------------------------*/
24803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024804 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024806 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070024807 {
24808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24809 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
24810 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
24811 WDI_ASSERT(0);
24812 return WDI_STATUS_E_FAILURE;
24813 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024814 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
24815 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
24816 &pBSSSes);
24817 if ( NULL == pBSSSes )
24818 {
24819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024820 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024821 return WDI_STATUS_E_FAILURE;
24822 }
24823 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024824
24825 //
24826 // Don't need to fill send buffer other than header
24827 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024828 wpalMemoryCopy( pSendBuffer+usDataOffset,
24829 &halGtkOffloadGetInfoReqParams,
24830 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024831
24832 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
24833 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
24834
24835 /*-------------------------------------------------------------------------
24836 Send Get STA Request to HAL
24837 -------------------------------------------------------------------------*/
24838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24839 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
24840}
24841
24842/**
24843 @brief Process host offload Rsp function (called when a
24844 response is being received over the bus from HAL)
24845
24846 @param pWDICtx: pointer to the WLAN DAL context
24847 pEventData: pointer to the event information structure
24848
24849 @see
24850 @return Result of the function call
24851*/
24852WDI_Status
24853WDI_ProcessGtkOffloadRsp
24854(
24855 WDI_ControlBlockType* pWDICtx,
24856 WDI_EventInfoType* pEventData
24857)
24858{
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 eHalStatus halStatus;
24860 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024861 tHalGtkOffloadRspParams halGtkOffloadRspParams;
24862 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24864
24865 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
24866
24867 /*-------------------------------------------------------------------------
24868 Sanity check
24869 -------------------------------------------------------------------------*/
24870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24871 ( NULL == pEventData->pEventData))
24872 {
24873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 WDI_ASSERT(0);
24876 return WDI_STATUS_E_FAILURE;
24877 }
24878
24879 /*-------------------------------------------------------------------------
24880 Extract response and send it to UMAC
24881 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024882 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24883 {
24884 wpalMemoryCopy( &halGtkOffloadRspParams,
24885 pEventData->pEventData,
24886 sizeof(halGtkOffloadRspParams));
24887
24888 wdiGtkOffloadRsparams.ulStatus =
24889 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
24890 wdiGtkOffloadRsparams.bssIdx =
24891 halGtkOffloadRspParams.bssIdx;
24892 }
24893 else
24894 {
24895 halStatus = *((eHalStatus*)pEventData->pEventData);
24896 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24897 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024898
24899 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024900 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024901
24902 return WDI_STATUS_SUCCESS;
24903}
24904
24905/**
24906 @brief Process GTK Offload Get Information Response function
24907
24908 @param pWDICtx: pointer to the WLAN DAL context
24909 pEventData: pointer to the event information structure
24910
24911 @see
24912 @return Result of the function call
24913*/
24914WDI_Status
24915WDI_ProcessGTKOffloadGetInfoRsp
24916(
24917 WDI_ControlBlockType* pWDICtx,
24918 WDI_EventInfoType* pEventData
24919)
24920{
Jeff Johnson295189b2012-06-20 16:38:30 -070024921 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024922 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024923 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
24924 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024925
24926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24927
24928 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
24929
24930 /*-------------------------------------------------------------------------
24931 Sanity check
24932 -------------------------------------------------------------------------*/
24933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24934 ( NULL == pEventData->pEventData ))
24935 {
24936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 WDI_ASSERT(0);
24939 return WDI_STATUS_E_FAILURE;
24940 }
24941
24942 /*-------------------------------------------------------------------------
24943 Extract response and send it to UMAC
24944 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024945 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24946 {
24947 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
24948 pEventData->pEventData,
24949 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024950
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024951 wdiGtkOffloadGetInfoRsparams.ulStatus =
24952 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
24953 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
24954 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
24955 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
24956 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
24957 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
24958 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
24959 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
24960 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
24961 wdiGtkOffloadGetInfoRsparams.bssIdx =
24962 halGtkOffloadGetInfoRspParams.bssIdx;
24963 }
24964 else
24965 {
24966 halStatus = *((eHalStatus*)pEventData->pEventData);
24967 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24968 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024969 /*Notify UMAC*/
24970 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24971 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024972 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024973
24974 return WDI_STATUS_SUCCESS;
24975}
24976#endif // WLAN_FEATURE_GTK_OFFLOAD
24977
24978#ifdef WLAN_WAKEUP_EVENTS
24979WDI_Status
24980WDI_ProcessWakeReasonInd
24981(
24982 WDI_ControlBlockType* pWDICtx,
24983 WDI_EventInfoType* pEventData
24984)
24985{
24986 WDI_LowLevelIndType *pWdiInd;
24987 tpWakeReasonParams pWakeReasonParams;
24988 wpt_uint32 allocSize = 0;
24989
24990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024991 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024992
24993 /*-------------------------------------------------------------------------
24994 Sanity check
24995 -------------------------------------------------------------------------*/
24996 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24997 ( NULL == pEventData->pEventData ))
24998 {
24999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025001 WDI_ASSERT( 0 );
25002 return WDI_STATUS_E_FAILURE;
25003 }
25004
25005 /*-------------------------------------------------------------------------
25006 Extract indication and send it to UMAC
25007 -------------------------------------------------------------------------*/
25008 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25009
25010 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25011
25012 //Allocate memory for WDI_WakeReasonIndType structure
25013 pWdiInd = wpalMemoryAllocate(allocSize) ;
25014
25015 if(NULL == pWdiInd)
25016 {
25017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25018 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025019 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 WDI_ASSERT(0);
25021 return WDI_STATUS_E_FAILURE;
25022 }
25023
25024 wpalMemoryZero(pWdiInd, allocSize);
25025
25026 /* Fill in the indication parameters*/
25027 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25028 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25029 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25030 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25031 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25032 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25033 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25034 &(pWakeReasonParams->aDataStart[0]),
25035 pWakeReasonParams->ulStoredDataLen);
25036
25037 /*Notify UMAC*/
25038 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25039
25040 //Free memory allocated for WDI_WakeReasonIndType structure
25041 wpalMemoryFree(pWdiInd);
25042
25043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025044 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025045
25046 return WDI_STATUS_SUCCESS;
25047}
25048#endif // WLAN_WAKEUP_EVENTS
25049
25050void WDI_GetWcnssCompiledApiVersion
25051(
25052 WDI_WlanVersionType *pWcnssApiVersion
25053)
25054{
25055 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25056 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25057 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25058 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25059}
25060
25061/**
25062 @brief Process Set TM Level Rsp function (called when a
25063 response is being received over the bus from HAL)
25064
25065 @param pWDICtx: pointer to the WLAN DAL context
25066 pEventData: pointer to the event information structure
25067
25068 @see
25069 @return Result of the function call
25070*/
25071WDI_Status
25072WDI_ProcessSetTmLevelRsp
25073(
25074 WDI_ControlBlockType* pWDICtx,
25075 WDI_EventInfoType* pEventData
25076)
25077{
25078 WDI_Status wdiStatus;
25079 eHalStatus halStatus;
25080 WDI_SetTmLevelCb wdiSetTmLevelCb;
25081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25082
25083 /*-------------------------------------------------------------------------
25084 Sanity check
25085 -------------------------------------------------------------------------*/
25086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25087 ( NULL == pEventData->pEventData ))
25088 {
25089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 WDI_ASSERT(0);
25092 return WDI_STATUS_E_FAILURE;
25093 }
25094
25095 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25096
25097 /*-------------------------------------------------------------------------
25098 Extract response and send it to UMAC
25099 -------------------------------------------------------------------------*/
25100 halStatus = *((eHalStatus*)pEventData->pEventData);
25101 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25102
25103 /*Notify UMAC*/
25104 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25105
25106 return WDI_STATUS_SUCCESS;
25107}/*WDI_ProcessSetTmLevelRsp*/
25108
25109/**
25110 @brief Process Set Thermal Mitigation level Changed request
25111
25112 @param pWDICtx: pointer to the WLAN DAL context
25113 pEventData: pointer to the event information structure
25114
25115 @see
25116 @return Result of the function call
25117*/
25118WDI_Status
25119WDI_ProcessSetTmLevelReq
25120(
25121 WDI_ControlBlockType* pWDICtx,
25122 WDI_EventInfoType* pEventData
25123)
25124{
25125 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25126 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25127 wpt_uint8* pSendBuffer = NULL;
25128 wpt_uint16 usDataOffset = 0;
25129 wpt_uint16 usSendSize = 0;
25130 tSetThermalMitgationType halTmMsg;
25131
25132 /*-------------------------------------------------------------------------
25133 Sanity check
25134 -------------------------------------------------------------------------*/
25135 if (( NULL == pEventData ) ||
25136 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25137 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25138 {
25139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 WDI_ASSERT(0);
25142 return WDI_STATUS_E_FAILURE;
25143 }
25144
25145 /*-----------------------------------------------------------------------
25146 Get message buffer
25147 -----------------------------------------------------------------------*/
25148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25149 sizeof(halTmMsg),
25150 &pSendBuffer, &usDataOffset, &usSendSize))||
25151 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25152 {
25153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25154 "Unable to get send buffer in Set PNO req %x %x %x",
25155 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25156 WDI_ASSERT(0);
25157 return WDI_STATUS_E_FAILURE;
25158 }
25159
25160 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25161 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25162
25163 wpalMemoryCopy( pSendBuffer+usDataOffset,
25164 &halTmMsg,
25165 sizeof(halTmMsg));
25166
25167 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25168 pWDICtx->pfncRspCB = NULL;
25169 /*-------------------------------------------------------------------------
25170 Send Get STA Request to HAL
25171 -------------------------------------------------------------------------*/
25172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25173 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25174}
25175
25176/* Fill the value from the global features enabled array to the global capabilities
25177 * bitmap struct
25178 */
25179static void
25180FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25181{
25182 wpt_int8 i;
25183 for (i=0; i<len; i++)
25184 {
25185 setFeatCaps(fCaps, enabledFeat[i]);
25186 }
25187}
25188
25189/**
25190 @brief WDI_featureCapsExchangeReq
25191 Post feature capability bitmap exchange event.
25192 Host will send its own capability to FW in this req and
25193 expect FW to send its capability back as a bitmap in Response
25194
25195 @param
25196
25197 wdiFeatureCapsExchangeCb: callback called on getting the response.
25198 It is kept to mantain similarity between WDI reqs and if needed, can
25199 be used in future. Currently, It is set to NULL
25200
25201 pUserData: user data will be passed back with the
25202 callback
25203
25204 @see
25205 @return Result of the function call
25206*/
25207WDI_Status
25208WDI_featureCapsExchangeReq
25209(
25210 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25211 void* pUserData
25212)
25213{
25214 WDI_EventInfoType wdiEventData;
25215 wpt_int32 fCapsStructSize;
25216
25217 /*------------------------------------------------------------------------
25218 Sanity Check
25219 ------------------------------------------------------------------------*/
25220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25221 {
25222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25223 "WDI API call before module is initialized - Fail request");
25224
25225 return WDI_STATUS_E_NOT_ALLOWED;
25226 }
25227
25228 /* Allocate memory separately for global variable carrying FW caps */
25229 fCapsStructSize = sizeof(tWlanFeatCaps);
25230 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25231 if ( NULL == gpHostWlanFeatCaps )
25232 {
25233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25234 "Cannot allocate memory for host capability info\n");
25235 WDI_ASSERT(0);
25236 return WDI_STATUS_MEM_FAILURE;
25237 }
25238
25239 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25240
25241 /*------------------------------------------------------------------------
25242 Fill in Event data and post to the Main FSM
25243 ------------------------------------------------------------------------*/
25244 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25245 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25247 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025248 gpHostWlanFeatCaps->featCaps[0],
25249 gpHostWlanFeatCaps->featCaps[1],
25250 gpHostWlanFeatCaps->featCaps[2],
25251 gpHostWlanFeatCaps->featCaps[3]
25252 );
25253
25254 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25255 wdiEventData.pEventData = gpHostWlanFeatCaps;
25256 wdiEventData.uEventDataSize = fCapsStructSize;
25257 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25258 wdiEventData.pUserData = pUserData;
25259
25260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25261}
25262
25263/**
Yathishd8713192012-12-10 14:21:35 -080025264 @brief Disable Active mode offload in Host
25265
25266 @param void
25267 @see
25268 @return void
25269*/
25270void
25271WDI_disableCapablityFeature(wpt_uint8 feature_index)
25272{
25273 supportEnabledFeatures[feature_index] = 0;
25274 return;
25275}
25276
25277/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 @brief Process Host-FW Capability Exchange Request function
25279
25280 @param pWDICtx: pointer to the WLAN DAL context
25281 pEventData: pointer to the event information structure
25282
25283 @see
25284 @return Result of the function call
25285*/
25286WDI_Status
25287WDI_ProcessFeatureCapsExchangeReq
25288(
25289 WDI_ControlBlockType* pWDICtx,
25290 WDI_EventInfoType* pEventData
25291)
25292{
25293 wpt_uint8* pSendBuffer = NULL;
25294 wpt_uint16 usDataOffset = 0;
25295 wpt_uint16 usSendSize = 0;
25296 wpt_uint16 usLen = 0;
25297
25298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25299
25300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025301 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025302
25303 /*-------------------------------------------------------------------------
25304 Sanity check
25305 -------------------------------------------------------------------------*/
25306 /* Call back function is NULL since not required for cap exchange req */
25307 if (( NULL == pEventData ) ||
25308 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25309 {
25310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 WDI_ASSERT(0);
25313 return WDI_STATUS_E_FAILURE;
25314 }
25315
25316 /*-----------------------------------------------------------------------
25317 Get message buffer
25318 -----------------------------------------------------------------------*/
25319 usLen = sizeof(tWlanFeatCaps);
25320
25321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25322 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25323 usLen,
25324 &pSendBuffer, &usDataOffset, &usSendSize))||
25325 ( usSendSize < (usDataOffset + usLen )))
25326 {
25327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25328 "Unable to get send buffer in feat caps exchange req %x %x",
25329 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25330 WDI_ASSERT(0);
25331 return WDI_STATUS_E_FAILURE;
25332 }
25333
25334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25337 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25338 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25339 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25340 );
25341
25342 /* Copy host caps after the offset in the send buffer */
25343 wpalMemoryCopy( pSendBuffer+usDataOffset,
25344 (tWlanFeatCaps *)pEventData->pEventData,
25345 usLen);
25346
25347 /*-------------------------------------------------------------------------
25348 Send Start Request to HAL
25349 -------------------------------------------------------------------------*/
25350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25351 (WDI_StartRspCb)pEventData->pCBfnc,
25352 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25353
25354}/*WDI_ProcessFeatureCapsExchangeReq*/
25355
25356/**
25357 @brief Process Host-FW Capability Exchange Response function
25358
25359 @param pWDICtx: pointer to the WLAN DAL context
25360 pEventData: pointer to the event information structure
25361
25362 @see
25363 @return Result of the function call
25364*/
25365WDI_Status
25366WDI_ProcessFeatureCapsExchangeRsp
25367(
25368 WDI_ControlBlockType* pWDICtx,
25369 WDI_EventInfoType* pEventData
25370)
25371{
25372 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25373 wpt_int32 fCapsStructSize;
25374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25375
25376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025377 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025378
25379 /*-------------------------------------------------------------------------
25380 Sanity check
25381 -------------------------------------------------------------------------*/
25382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25383 ( NULL == pEventData->pEventData ))
25384 {
25385 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025388 WDI_ASSERT(0);
25389 return WDI_STATUS_E_FAILURE;
25390 }
25391
25392 /* Allocate memory separately for global variable carrying FW caps */
25393 fCapsStructSize = sizeof(tWlanFeatCaps);
25394 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25395 if ( NULL == gpFwWlanFeatCaps )
25396 {
25397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25398 "Cannot allocate memory for host capability info\n");
25399 WDI_ASSERT(0);
25400 return WDI_STATUS_MEM_FAILURE;
25401 }
25402
25403 /*-------------------------------------------------------------------------
25404 Unpack HAL Response Message - the header was already extracted by the
25405 main Response Handling procedure
25406 -------------------------------------------------------------------------*/
25407 /*-------------------------------------------------------------------------
25408 Extract response and send it to UMAC
25409 -------------------------------------------------------------------------*/
25410
25411 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25412 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25414 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 gpFwWlanFeatCaps->featCaps[0],
25416 gpFwWlanFeatCaps->featCaps[1],
25417 gpFwWlanFeatCaps->featCaps[2],
25418 gpFwWlanFeatCaps->featCaps[3]
25419 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025420
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25422
25423 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25424 if (wdiFeatureCapsExchangeCb != NULL)
25425 wdiFeatureCapsExchangeCb(NULL, NULL);
25426
25427 return WDI_STATUS_SUCCESS;
25428}
25429
Mohit Khanna4a70d262012-09-11 16:30:12 -070025430#ifdef WLAN_FEATURE_11AC
25431WDI_Status
25432WDI_ProcessUpdateVHTOpModeRsp
25433(
25434 WDI_ControlBlockType* pWDICtx,
25435 WDI_EventInfoType* pEventData
25436)
25437{
25438 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25439 WDI_Status wdiStatus;
25440 eHalStatus halStatus;
25441
25442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25443
25444 /*-------------------------------------------------------------------------
25445 Sanity check
25446 -------------------------------------------------------------------------*/
25447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25448 ( NULL == pEventData->pEventData))
25449 {
25450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025451 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025452 WDI_ASSERT(0);
25453 return WDI_STATUS_E_FAILURE;
25454 }
25455 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25456
25457 /*-------------------------------------------------------------------------
25458 Extract response and send it to UMAC
25459 -------------------------------------------------------------------------*/
25460 halStatus = *((eHalStatus*)pEventData->pEventData);
25461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25462
25463 /*Notify UMAC*/
25464 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25465
25466 return WDI_STATUS_SUCCESS;
25467}
25468#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025469/**
25470 @brief WDI_getHostWlanFeatCaps
25471 WDI API that returns whether the feature passed to it as enum value in
25472 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25473 variable storing host capability bitmap to find this. This can be used by
25474 other moduels to decide certain things like call different APIs based on
25475 whether a particular feature is supported.
25476
25477 @param
25478
25479 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25480
25481 @see
25482 @return
25483 0 - if the feature is NOT supported in host
25484 any non-zero value - if the feature is SUPPORTED in host.
25485*/
25486wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25487{
25488 wpt_uint8 featSupported = 0;
25489 if (gpHostWlanFeatCaps != NULL)
25490 {
25491 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25492 }
25493 else
25494 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025496 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 }
25498 return featSupported;
25499}
25500
25501/**
25502 @brief WDI_getFwWlanFeatCaps
25503 WDI API that returns whether the feature passed to it as enum value in
25504 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25505 variable storing host capability bitmap to find this. This can be used by
25506 other moduels to decide certain things like call different APIs based on
25507 whether a particular feature is supported.
25508
25509 @param
25510
25511 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25512 in wlan_hal_msg.h.
25513
25514 @see
25515 @return
25516 0 - if the feature is NOT supported in FW
25517 any non-zero value - if the feature is SUPPORTED in FW.
25518*/
25519wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25520{
25521 wpt_uint8 featSupported = 0;
25522 if (gpFwWlanFeatCaps != NULL)
25523 {
25524 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25525 }
25526 else
25527 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025529 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 }
25531 return featSupported;
25532}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025533
25534#ifdef WLAN_FEATURE_11AC
25535WDI_Status
25536WDI_ProcessUpdateVHTOpModeReq
25537(
25538 WDI_ControlBlockType* pWDICtx,
25539 WDI_EventInfoType* pEventData
25540)
25541{
25542 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25543 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25544 wpt_uint8* pSendBuffer = NULL;
25545 wpt_uint16 usDataOffset = 0;
25546 wpt_uint16 usSendSize = 0;
25547
25548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25549
25550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025551 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025552
25553 /*-------------------------------------------------------------------------
25554 Sanity check
25555 -------------------------------------------------------------------------*/
25556 if (( NULL == pEventData ) ||
25557 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25558 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25559 {
25560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025561 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025562 WDI_ASSERT(0);
25563 return WDI_STATUS_E_FAILURE;
25564 }
25565
25566 /*-----------------------------------------------------------------------
25567 Get message buffer
25568 -----------------------------------------------------------------------*/
25569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25570 sizeof(WDI_UpdateVHTOpMode),
25571 &pSendBuffer, &usDataOffset, &usSendSize))||
25572 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25573 {
25574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25575 "Unable to get send buffer in update vht opMode req");
25576 WDI_ASSERT(0);
25577 return WDI_STATUS_E_FAILURE;
25578 }
25579
25580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25581 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25582
25583 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25584 sizeof(WDI_UpdateVHTOpMode));
25585
25586 /*-------------------------------------------------------------------------
25587 Send Start Request to HAL
25588 -------------------------------------------------------------------------*/
25589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25590 wdiVHTOpModeCb,
25591 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25592
25593}
25594
25595WDI_Status
25596WDI_UpdateVHTOpModeReq
25597(
25598 WDI_UpdateVHTOpMode *pData,
25599 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
25600 void* pUserData
25601)
25602{
25603 WDI_EventInfoType wdiEventData;
25604
25605 /*------------------------------------------------------------------------
25606 Sanity Check
25607 ------------------------------------------------------------------------*/
25608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25609 {
25610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25611 "WDI API call before module is initialized - Fail request");
25612
25613 return WDI_STATUS_E_NOT_ALLOWED;
25614 }
25615
25616 /*------------------------------------------------------------------------
25617 Fill in Event data and post to the Main FSM
25618 ------------------------------------------------------------------------*/
25619 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
25620 wdiEventData.pEventData = pData;
25621 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
25622 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
25623 wdiEventData.pUserData = pUserData;
25624
25625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25626 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
25627
25628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25629
25630}
25631#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025632
25633/**
25634 @brief WDI_TransportChannelDebug -
25635 Display DXE Channel debugging information
25636 User may request to display DXE channel snapshot
25637 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025638
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080025639 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025640 @param enableStallDetect : Enable stall detect feature
25641 This feature will take effect to data performance
25642 Not integrate till fully verification
25643 @see
25644 @return none
25645*/
25646void WDI_TransportChannelDebug
25647(
25648 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025649 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025650)
25651{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070025652 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070025653 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070025654}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025655/**
25656 @brief WDI_SsrTimerCB
25657 Callback function for SSR timer, if this is called then the graceful
25658 shutdown for Riva did not happen.
25659
25660 @param pUserData : user data to timer
25661
25662 @see
25663 @return none
25664*/
25665void
25666WDI_SsrTimerCB
25667(
25668 void *pUserData
25669)
25670{
25671 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
25672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25673
25674 if (NULL == pWDICtx )
25675 {
25676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025677 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070025678 WDI_ASSERT(0);
25679 return;
25680 }
25681 wpalRivaSubystemRestart();
25682
25683 return;
25684
25685}/*WDI_SsrTimerCB*/