blob: db4f2d9f83ee5e207d824cd92e7048504c161b90 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
147 ,WLAN_ROAM_SCAN_OFFLOAD
148#else
149 ,FEATURE_NOT_SUPPORTED
150#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800151 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700152
153/*--------------------------------------------------------------------------
154 WLAN DAL State Machine
155 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700156WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700157{
158 /*WDI_INIT_ST*/
159 {{
160 WDI_MainStart, /*WDI_START_EVENT*/
161 NULL, /*WDI_STOP_EVENT*/
162 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
163 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
164 WDI_MainClose, /*WDI_CLOSE_EVENT*/
165 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
166 }},
167
168 /*WDI_STARTED_ST*/
169 {{
170 WDI_MainStartStarted, /*WDI_START_EVENT*/
171 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
172 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
173 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
174 NULL, /*WDI_CLOSE_EVENT*/
175 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
176 }},
177
178 /*WDI_STOPPED_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
182 NULL, /*WDI_REQUEST_EVENT*/
183 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700186 }},
187
188 /*WDI_BUSY_ST*/
189 {{
190 WDI_MainStartBusy, /*WDI_START_EVENT*/
191 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
192 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
196 }}
197};
198
Jeff Johnsone7245742012-09-05 17:12:55 -0700199/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 DAL Request Processing Array - the functions in this table will only be
201 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700202 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700204WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700205{
206 /*INIT*/
207 WDI_ProcessStartReq, /* WDI_START_REQ */
208 WDI_ProcessStopReq, /* WDI_STOP_REQ */
209 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
210
211 /*SCAN*/
212 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
213 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
214 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
215 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
216
217 /*ASSOCIATION*/
218 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
219 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
220 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
221 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
222 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
223
224 /* Security */
225 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
226 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
227 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
228 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
229
230 /* QoS and BA APIs */
231 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
232 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
233 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
234 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
235 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
236
237 /* Miscellaneous Control APIs */
238 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
239 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
240 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
241 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
242 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
243
244 /*BA APIs*/
245 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
246 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
247
248 /*Beacon processing APIs*/
249 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
250 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
251
252 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
253 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
254 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
255 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 /* PowerSave APIs */
258 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
259 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
260 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
261 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
262 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
263 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
264 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
265 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
266 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
267 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
268 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
269 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
270 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
271 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
272 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
273 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
274 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
275 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
276 /*NV Download APIs*/
277 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
278 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
279 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
280#ifdef WLAN_FEATURE_VOWIFI_11R
281 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
282#else
283 NULL,
284#endif /* WLAN_FEATURE_VOWIFI_11R */
285 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
286 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700288
289#ifdef FEATURE_OEM_DATA_SUPPORT
290 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
291#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700292 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700293#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700294 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700295
296 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700297
298#ifdef FEATURE_WLAN_SCAN_PNO
299 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
300 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
301 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
302#else
303 NULL,
304 NULL,
305 NULL,
306#endif /* FEATURE_WLAN_SCAN_PNO */
307
308 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309
Jeff Johnson295189b2012-06-20 16:38:30 -0700310#ifdef WLAN_FEATURE_PACKET_FILTERING
311 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700316 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700319#else
320 NULL,
321 NULL,
322 NULL,
323 NULL,
324#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700325 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
327 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
328
329 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
330#ifdef FEATURE_WLAN_CCX
331 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
332#else
333 NULL,
334#endif
335
336#ifdef WLAN_FEATURE_GTK_OFFLOAD
337 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
338 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
339#else
340 NULL,
341 NULL,
342#endif // WLAN_FEATURE_GTK_OFFLOAD
343
344 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
345 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#ifdef WLAN_FEATURE_11AC
347 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800348#else
349 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700350#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800351#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
352 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
353#else
schangd82195a2013-03-13 18:41:24 -0700354 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800355#endif
schangd82195a2013-03-13 18:41:24 -0700356 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700357#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
358 WDI_ProcessStartRoamCandidatelookupReq, /* WDI_START_ROAM_CANDIDATE_LOOKUP_REQ */
359#else
360 NULL,
361#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
schangd82195a2013-03-13 18:41:24 -0700362 /*-------------------------------------------------------------------------
363 Indications
364 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800366 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700367#ifdef WLAN_FEATURE_11W
368 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
369#else
370 NULL,
371#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700372};
373
374
Jeff Johnsone7245742012-09-05 17:12:55 -0700375/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700376 DAL Request Processing Array - the functions in this table will only be
377 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700378 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700380WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700381{
382 /*INIT*/
383 WDI_ProcessStartRsp, /* WDI_START_RESP */
384 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
385 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
386
387 /*SCAN*/
388 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
389 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
390 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
391 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
392
393 /* ASSOCIATION*/
394 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
395 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
396 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
397 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
398 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
399
400 /* Security */
401 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
402 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
403 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
404 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
405
406 /* QoS and BA APIs */
407 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
408 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
409 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
410 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
411 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
412
413 /* Miscellaneous Control APIs */
414 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
415 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
416 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
417 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
418 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
419
420 /* BA APIs*/
421 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
422 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700423
Jeff Johnson295189b2012-06-20 16:38:30 -0700424 /* IBSS APIs*/
425 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
426 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
427
428 /*Soft AP APIs*/
429 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
430 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
431 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
432 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
433
434 /* PowerSave APIs */
435 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
436 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
437 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
438 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
439 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
440 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
441 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
442 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
443 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
444 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
445 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
446 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
447 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
448 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
449 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
450 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
451 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
452 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700453
Jeff Johnson295189b2012-06-20 16:38:30 -0700454
455 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
456
457 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
458 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
459#ifdef WLAN_FEATURE_VOWIFI_11R
460 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
461#else
462 NULL,
463#endif /* WLAN_FEATURE_VOWIFI_11R */
464 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
465 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700466#ifdef FEATURE_OEM_DATA_SUPPORT
467 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
468#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700469 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700470#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700471 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
472
Jeff Johnson295189b2012-06-20 16:38:30 -0700473 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700474
Jeff Johnson295189b2012-06-20 16:38:30 -0700475 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700476
Jeff Johnsone7245742012-09-05 17:12:55 -0700477 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
478
Jeff Johnson295189b2012-06-20 16:38:30 -0700479#ifdef FEATURE_WLAN_SCAN_PNO
480 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
481 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
482 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
483#else
484 NULL,
485 NULL,
486 NULL,
487#endif // FEATURE_WLAN_SCAN_PNO
488
489 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
490
491 /*---------------------------------------------------------------------
492 Indications
493 ---------------------------------------------------------------------*/
494#ifdef WLAN_FEATURE_PACKET_FILTERING
495 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700496 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700497 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700498 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700499 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700500 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700501 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700502 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700503#else
504 NULL,
505 NULL,
506 NULL,
507 NULL,
508#endif // WLAN_FEATURE_PACKET_FILTERING
509
510 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
511 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
512
513 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
514#ifdef FEATURE_WLAN_CCX
515 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
516#else
517 NULL,
518#endif
519
520#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700521 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
522 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700523#else
524 NULL,
525 NULL,
526#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
528 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700529#ifdef WLAN_FEATURE_11AC
530 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700531#else
532 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700533#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800534#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
535 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
536#else
537 NULL,
538#endif
schangd82195a2013-03-13 18:41:24 -0700539 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700540#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
541 WDI_ProcessStartRoamCandidatelookupRsp, /* WDI_START_ROAM_CANDIDATE_LOOKUP_RESP */
542#else
543 NULL,
544#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
549 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
550 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
551 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
552 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
553 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
554
555 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
556
557 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
558
Jeff Johnson295189b2012-06-20 16:38:30 -0700559 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700560
561#ifdef FEATURE_WLAN_SCAN_PNO
562 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
563#else
564 NULL,
565#endif // FEATURE_WLAN_SCAN_PNO
566
567#ifdef WLAN_WAKEUP_EVENTS
568 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
569#else // WLAN_WAKEUP_EVENTS
570 NULL,
571#endif // WLAN_WAKEUP_EVENTS
572
573 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800574
Viral Modi9dc288a2012-12-10 13:09:21 -0800575 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700576};
577
578
Jeff Johnsone7245742012-09-05 17:12:55 -0700579/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700580 WLAN DAL Global Control Block
581 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700582WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700586
587/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700588WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700589void* WDI_GET_PAL_CTX( void )
590{
Jeff Johnsone7245742012-09-05 17:12:55 -0700591 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700592}/*WDI_GET_PAL_CTX*/
593
Jeff Johnsone7245742012-09-05 17:12:55 -0700594/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700595 Helper inline converters
596 ============================================================================*/
597/*Convert WDI driver type into HAL driver type*/
598WPT_STATIC WPT_INLINE WDI_Status
599WDI_HAL_2_WDI_STATUS
600(
601 eHalStatus halStatus
602);
603
604/*Convert WDI request type into HAL request type*/
605WPT_STATIC WPT_INLINE tHalHostMsgType
606WDI_2_HAL_REQ_TYPE
607(
608 WDI_RequestEnumType wdiReqType
609);
610
611/*Convert WDI response type into HAL response type*/
612WPT_STATIC WPT_INLINE WDI_ResponseEnumType
613HAL_2_WDI_RSP_TYPE
614(
615 tHalHostMsgType halMsg
616);
617
618/*Convert WDI driver type into HAL driver type*/
619WPT_STATIC WPT_INLINE tDriverType
620WDI_2_HAL_DRV_TYPE
621(
622 WDI_DriverType wdiDriverType
623);
624
625/*Convert WDI stop reason into HAL stop reason*/
626WPT_STATIC WPT_INLINE tHalStopType
627WDI_2_HAL_STOP_REASON
628(
629 WDI_StopType wdiStopType
630);
631
632/*Convert WDI scan mode type into HAL scan mode type*/
633WPT_STATIC WPT_INLINE eHalSysMode
634WDI_2_HAL_SCAN_MODE
635(
636 WDI_ScanMode wdiScanMode
637);
638
639/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700640WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700641WDI_2_HAL_SEC_CH_OFFSET
642(
643 WDI_HTSecondaryChannelOffset wdiSecChOffset
644);
645
646/*Convert WDI BSS type into HAL BSS type*/
647WPT_STATIC WPT_INLINE tSirBssType
648WDI_2_HAL_BSS_TYPE
649(
650 WDI_BssType wdiBSSType
651);
652
653/*Convert WDI NW type into HAL NW type*/
654WPT_STATIC WPT_INLINE tSirNwType
655WDI_2_HAL_NW_TYPE
656(
657 WDI_NwType wdiNWType
658);
659
660/*Convert WDI chanel bonding type into HAL cb type*/
661WPT_STATIC WPT_INLINE ePhyChanBondState
662WDI_2_HAL_CB_STATE
663(
664 WDI_PhyChanBondState wdiCbState
665);
666
667/*Convert WDI chanel bonding type into HAL cb type*/
668WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
669WDI_2_HAL_HT_OPER_MODE
670(
671 WDI_HTOperatingMode wdiHTOperMode
672);
673
674/*Convert WDI mimo PS type into HAL mimo PS type*/
675WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
676WDI_2_HAL_MIMO_PS
677(
678 WDI_HTMIMOPowerSaveState wdiHTOperMode
679);
680
681/*Convert WDI ENC type into HAL ENC type*/
682WPT_STATIC WPT_INLINE tAniEdType
683WDI_2_HAL_ENC_TYPE
684(
685 WDI_EncryptType wdiEncType
686);
687
688/*Convert WDI WEP type into HAL WEP type*/
689WPT_STATIC WPT_INLINE tAniWepType
690WDI_2_HAL_WEP_TYPE
691(
692 WDI_WepType wdiWEPType
693);
694
695/*Convert WDI Link State into HAL Link State*/
696WPT_STATIC WPT_INLINE tSirLinkState
697WDI_2_HAL_LINK_STATE
698(
699 WDI_LinkStateType wdiLinkState
700);
701
Jeff Johnsone7245742012-09-05 17:12:55 -0700702/*Translate a STA Context from WDI into HAL*/
703WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700704void
705WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700706(
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 tConfigStaParams* phalConfigSta,
708 WDI_ConfigStaReqInfoType* pwdiConfigSta
709);
Jeff Johnsone7245742012-09-05 17:12:55 -0700710
711/*Translate a Rate set info from WDI into HAL*/
712WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700713WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700714(
Jeff Johnson295189b2012-06-20 16:38:30 -0700715 tSirMacRateSet* pHalRateSet,
716 WDI_RateSet* pwdiRateSet
717);
718
719/*Translate an EDCA Parameter Record from WDI into HAL*/
720WPT_STATIC WPT_INLINE void
721WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700722(
Jeff Johnson295189b2012-06-20 16:38:30 -0700723 tSirMacEdcaParamRecord* phalEdcaParam,
724 WDI_EdcaParamRecord* pWDIEdcaParam
725);
726
727/*Copy a management frame header from WDI fmt into HAL fmt*/
728WPT_STATIC WPT_INLINE void
729WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
730(
731 tSirMacMgmtHdr* pmacMgmtHdr,
732 WDI_MacMgmtHdr* pwdiMacMgmtHdr
733);
734
735/*Copy config bss parameters from WDI fmt into HAL fmt*/
736WPT_STATIC WPT_INLINE void
737WDI_CopyWDIConfigBSSToHALConfigBSS
738(
739 tConfigBssParams* phalConfigBSS,
740 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
741);
742
Jeff Johnsone7245742012-09-05 17:12:55 -0700743/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700744 pointed to by user data */
745WPT_STATIC WPT_INLINE void
746WDI_ExtractRequestCBFromEvent
747(
748 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700749 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700750 void** ppUserData
751);
752
753wpt_uint8
754WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700755(
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 WDI_ControlBlockType* pWDICtx,
757 WDI_BSSSessionType** ppSession
758);
759
760void
761WDI_AddBcastSTAtoSTATable
762(
763 WDI_ControlBlockType* pWDICtx,
764 WDI_AddStaParams * staParams,
765 wpt_uint16 usBcastStaIdx
766);
767
768WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700769(
Jeff Johnson295189b2012-06-20 16:38:30 -0700770 WDI_ControlBlockType* pWDICtx,
771 WDI_EventInfoType* pEventData
772);
773
774void
775WDI_SetPowerStateCb
776(
777 wpt_status status,
778 unsigned int dxePhyAddr,
779 void *pContext
780);
781
782#define CASE_RETURN_STRING( str ) \
783 case ( ( str ) ): return( #str ); break \
784
785/**
786 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700787
788 @param wdiReqMsgId: WDI Message request Id
789
790 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700791 @return Result of the function call
792*/
793static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
794{
795 switch (wdiReqMsgId)
796 {
797 CASE_RETURN_STRING( WDI_START_REQ );
798 CASE_RETURN_STRING( WDI_STOP_REQ );
799 CASE_RETURN_STRING( WDI_CLOSE_REQ );
800 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
801 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
802 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
803 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
804 CASE_RETURN_STRING( WDI_JOIN_REQ );
805 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
806 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
807 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
808 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
809 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
810 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
811 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
812 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
813 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
814 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
815 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
816 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
817 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
818 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
819 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
820 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
821 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
822 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
823 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
824 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
825 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
826 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
827 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
828 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
829 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
830 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
831 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
832 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
833 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
834 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
835 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
836 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
837 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
838 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
839 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
840 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
841 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
842 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
843 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
844 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
845 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
846 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
847 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
848 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
849 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
850 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
851 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
852 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
853 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
854 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
855 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
856 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700857 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700858 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
859 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
860 #ifdef FEATURE_WLAN_SCAN_PNO
861 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
862 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
863 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
864 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700865#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
866 CASE_RETURN_STRING( WDI_START_ROAM_CANDIDATE_LOOKUP_REQ );
867#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700868 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
869 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
870 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
871 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
872 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
873 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
874 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
875 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
876 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800877 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800878 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700879#ifdef WLAN_FEATURE_11W
880 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
881#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700882 default:
883 return "Unknown WDI MessageId";
884 }
885}
886
887
888
889/**
890 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700891
892 @param wdiRespMsgId: WDI Message response Id
893
894 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700895 @return Result of the function call
896*/
897static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
898{
899 switch (wdiRespMsgId)
900 {
901 CASE_RETURN_STRING( WDI_START_RESP );
902 CASE_RETURN_STRING( WDI_STOP_RESP );
903 CASE_RETURN_STRING( WDI_CLOSE_RESP );
904 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
905 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
906 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
907 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
908 CASE_RETURN_STRING( WDI_JOIN_RESP );
909 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
910 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
911 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
912 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
913 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
914 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
915 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
916 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
917 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
918 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
919 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
920 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
921 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
922 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
923 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
924 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
925 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
926 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
927 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
928 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
929 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
930 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
931 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
932 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
933 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
934 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
935 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
936 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
937 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
938 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
939 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
940 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
941 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
942 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
943 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
944 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
945 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
946 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
947 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
948 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
949 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
950 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
951 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
952 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
953 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
954 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
955 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
956 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
957 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
958 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
959 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
960 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700961 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
963 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
964 #ifdef FEATURE_WLAN_SCAN_PNO
965 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
966 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
967 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
968 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700969#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
970 CASE_RETURN_STRING( WDI_START_ROAM_CANDIDATE_LOOKUP_RESP );
971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
973 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
974 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
975 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
976 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
977 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
978 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
979 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800980 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 default:
982 return "Unknown WDI MessageId";
983 }
984}
985
986/**
987 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700988
989 @param halStatusId: HAL status Id
990
991 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700992 @return Result of the function call
993*/
994static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
995{
996 switch (halStatusId)
997 {
998 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
999 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1000 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1001 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1002 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1003 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1004 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1005 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1006 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1007 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1008 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1009 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1010 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1011 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1012 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1013 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1014 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1015 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1016 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1017 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1018 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1019 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1020 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1021 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1022 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1023 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1024 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1025 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1026 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1027 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1028 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1029 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1030 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1031 default:
1032 return "Unknown HAL status";
1033 }
1034}
1035
Jeff Johnsone7245742012-09-05 17:12:55 -07001036/*========================================================================
1037
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001039
Jeff Johnson295189b2012-06-20 16:38:30 -07001040==========================================================================*/
1041
1042/**
1043 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001044
Jeff Johnson295189b2012-06-20 16:38:30 -07001045 DAL will allocate all the resources it needs. It will open PAL, it will also
1046 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001047 DXE/SMD or any other drivers that they need.
1048
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 @param pOSContext: pointer to the OS context provided by the UMAC
1050 will be passed on to PAL on Open
1051 ppWDIGlobalCtx: output pointer of Global Context
1052 pWdiDevCapability: output pointer of device capability
1053
1054 @return Result of the function call
1055*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001057WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001058(
Jeff Johnson295189b2012-06-20 16:38:30 -07001059 void* pOSContext,
1060 void** ppWDIGlobalCtx,
1061 WDI_DeviceCapabilityType* pWdiDevCapability,
1062 unsigned int driverType
1063)
1064{
1065 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001066 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001068 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1070
1071 /*---------------------------------------------------------------------
1072 Sanity check
1073 ---------------------------------------------------------------------*/
1074 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1075 {
1076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1077 "Invalid input parameters in WDI_Init");
1078
Jeff Johnsone7245742012-09-05 17:12:55 -07001079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 }
1081
1082 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001083 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 ---------------------------------------------------------------------*/
1085 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1088 "WDI module already initialized - return");
1089
Jeff Johnsone7245742012-09-05 17:12:55 -07001090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 }
1092
1093 /*Module is now initialized - this flag is to ensure the fact that multiple
1094 init will not happen on WDI
1095 !! - potential race does exist because read and set are not atomic,
1096 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001097 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001098
1099 /*Setup the control block */
1100 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001101 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001102
1103 /*Setup the STA Table*/
1104 wdiStatus = WDI_STATableInit(&gWDICb);
1105 if ( WDI_STATUS_SUCCESS != wdiStatus )
1106 {
1107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1108 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001109 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001110 goto fail_STATableInit;
1111 }
1112
1113 /*------------------------------------------------------------------------
1114 Open the PAL
1115 ------------------------------------------------------------------------*/
1116 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1117 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1118 {
1119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1120 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001121 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001122 goto fail_wpalOpen;
1123 }
1124
1125 /*Initialize main synchro mutex - it will be used to ensure integrity of
1126 the main WDI Control Block*/
1127 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1128 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1129 {
1130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1131 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001132 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 goto fail_mutex;
1134 }
1135
1136 /*Initialize the response timer - it will be used to time all messages
1137 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001138 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1139 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001140 &gWDICb);
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_timer;
1147 }
1148
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001149 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1150 WDI_SsrTimerCB,
1151 &gWDICb);
1152 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1153 {
1154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1155 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001156 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001157 goto fail_timer2;
1158 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001159 /* Initialize the WDI Pending Request Queue*/
1160 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1161 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1162 {
1163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1164 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001165 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001166 goto fail_pend_queue;
1167 }
1168
1169 /*Init WDI Pending Assoc Id Queue */
1170 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1171 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1172 {
1173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1174 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001175 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 goto fail_assoc_queue;
1177 }
1178
1179 /*Initialize the BSS sessions pending Queue */
1180 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1181 {
1182 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1183 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1184 {
1185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1186 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001187 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 goto fail_bss_queue;
1189 }
1190 }
1191
1192 /*Indicate the control block is sufficiently initialized for callbacks*/
1193 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1194
1195 /*------------------------------------------------------------------------
1196 Initialize the Data Path Utility Module
1197 ------------------------------------------------------------------------*/
1198 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1199 if ( WDI_STATUS_SUCCESS != wdiStatus )
1200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1202 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001203 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 goto fail_dp_util_init;
1205 }
1206
1207 /* Init Set power state event */
1208 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001209 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 {
1211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1212 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001213 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001214 goto fail_power_event;
1215 }
1216
1217 /* Init WCTS action event */
1218 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001219 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001220 {
1221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1222 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001223 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 goto fail_wcts_event;
1225 }
1226
1227 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001228 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001229 ------------------------------------------------------------------------*/
1230 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1231 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001232 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001233 wctsCBs.wctsRxMsgCBData = &gWDICb;
1234
Jeff Johnsone7245742012-09-05 17:12:55 -07001235 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001237 WDI_CT_CHANNEL_SIZE,
1238 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001239
1240 if ( NULL == gWDICb.wctsHandle )
1241 {
1242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001243 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001244 goto fail_wcts_open;
1245 }
1246
1247 gWDICb.driverMode = (tDriverType)driverType;
1248 /* FTM mode not need to open Transport Driver */
1249 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 /*------------------------------------------------------------------------
1252 Open the Data Transport
1253 ------------------------------------------------------------------------*/
1254 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1255 {
1256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001257 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 goto fail_wdts_open;
1259 }
1260 }
1261
1262 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001263 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001264
1265 /*Send the context as a ptr to the global WDI Control Block*/
1266 *ppWDIGlobalCtx = &gWDICb;
1267
1268 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001269 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1271 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1272 return WDI_STATUS_SUCCESS;
1273
1274 /* ERROR handlers
1275 Undo everything that completed successfully */
1276
1277 fail_wdts_open:
1278 {
1279 wpt_status eventStatus;
1280
1281 /* Closing WCTS in this scenario is tricky since it has to close
1282 the SMD channel and then we get notified asynchronously when
1283 the channel has been closed. So we take some of the logic from
1284 the "normal" close procedure in WDI_Close()
1285 */
1286
1287 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001288 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001291 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 }
1293
1294 WCTS_CloseTransport(gWDICb.wctsHandle);
1295
1296 /* Wait for WCTS to close the control transport. If we were able
1297 to reset the event flag, then we'll wait for the event,
1298 otherwise we'll wait for a maximum amount of time required for
1299 the channel to be closed */
1300 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1301 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001302 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001303 WDI_WCTS_ACTION_TIMEOUT);
1304 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1305 {
1306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001307 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 }
1309 }
1310 else
1311 {
1312 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1313 }
1314 }
1315 fail_wcts_open:
1316 wpalEventDelete(&gWDICb.wctsActionEvent);
1317 fail_wcts_event:
1318 wpalEventDelete(&gWDICb.setPowerStateEvent);
1319 fail_power_event:
1320 WDI_DP_UtilsExit(&gWDICb);
1321 fail_dp_util_init:
1322 gWDICb.magic = 0;
1323 fail_bss_queue:
1324 /* entries 0 thru i-1 were successfully initialized */
1325 while (0 < i)
1326 {
1327 i--;
1328 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1329 }
1330 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1331 fail_assoc_queue:
1332 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1333 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001334 wpalTimerDelete(&gWDICb.ssrTimer);
1335 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 wpalTimerDelete(&gWDICb.wptResponseTimer);
1337 fail_timer:
1338 wpalMutexDelete(&gWDICb.wptMutex);
1339 fail_mutex:
1340 wpalClose(gWDICb.pPALContext);
1341 fail_wpalOpen:
1342 WDI_STATableClose(&gWDICb);
1343 fail_STATableInit:
1344 gWDIInitialized = eWLAN_PAL_FALSE;
1345
1346 return WDI_STATUS_E_FAILURE;
1347
1348}/*WDI_Init*/;
1349
1350/**
1351 @brief WDI_Start will be called when the upper MAC is ready to
1352 commence operation with the WLAN Device. Upon the call
1353 of this API the WLAN DAL will pack and send a HAL Start
1354 message to the lower RIVA sub-system if the SMD channel
1355 has been fully opened and the RIVA subsystem is up.
1356
1357 If the RIVA sub-system is not yet up and running DAL
1358 will queue the request for Open and will wait for the
1359 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001361
1362 WDI_Init must have been called.
1363
Jeff Johnsone7245742012-09-05 17:12:55 -07001364 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001365 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001366
Jeff Johnson295189b2012-06-20 16:38:30 -07001367 wdiStartRspCb: callback for passing back the response of
1368 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001369
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001371 callback
1372
Jeff Johnson295189b2012-06-20 16:38:30 -07001373 @see WDI_Start
1374 @return Result of the function call
1375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001377WDI_Start
1378(
1379 WDI_StartReqParamsType* pwdiStartParams,
1380 WDI_StartRspCb wdiStartRspCb,
1381 void* pUserData
1382)
1383{
1384 WDI_EventInfoType wdiEventData;
1385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1386
1387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 ------------------------------------------------------------------------*/
1390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1391 {
1392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1393 "WDI API call before module is initialized - Fail request");
1394
Jeff Johnsone7245742012-09-05 17:12:55 -07001395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001396 }
1397
1398 /*------------------------------------------------------------------------
1399 Fill in Event data and post to the Main FSM
1400 ------------------------------------------------------------------------*/
1401 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001402 wdiEventData.pEventData = pwdiStartParams;
1403 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1404 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 wdiEventData.pUserData = pUserData;
1406
1407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1408
1409}/*WDI_Start*/
1410
1411/**
1412 @brief WDI_Stop will be called when the upper MAC is ready to
1413 stop any operation with the WLAN Device. Upon the call
1414 of this API the WLAN DAL will pack and send a HAL Stop
1415 message to the lower RIVA sub-system if the DAL Core is
1416 in started state.
1417
1418 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001419
1420 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001421
1422 WDI_Start must have been called.
1423
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001426
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 wdiStopRspCb: callback for passing back the response of
1428 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001429
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 callback
1432
Jeff Johnson295189b2012-06-20 16:38:30 -07001433 @see WDI_Start
1434 @return Result of the function call
1435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001437WDI_Stop
1438(
1439 WDI_StopReqParamsType* pwdiStopParams,
1440 WDI_StopRspCb wdiStopRspCb,
1441 void* pUserData
1442)
1443{
1444 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001445 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1447
1448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 ------------------------------------------------------------------------*/
1451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1452 {
1453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1454 "WDI API call before module is initialized - Fail request");
1455
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 }
1458
Jeff Johnson43971f52012-07-17 12:26:56 -07001459 /*Access to the global state must be locked before cleaning */
1460 wpalMutexAcquire(&pWDICtx->wptMutex);
1461
1462 /*Clear all pending request*/
1463 WDI_ClearPendingRequests(pWDICtx);
1464
1465 /*We have completed cleaning unlock now*/
1466 wpalMutexRelease(&pWDICtx->wptMutex);
1467
Jeff Johnson295189b2012-06-20 16:38:30 -07001468 /* Free the global variables */
1469 wpalMemoryFree(gpHostWlanFeatCaps);
1470 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001471 gpHostWlanFeatCaps = NULL;
1472 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001473
1474 /*------------------------------------------------------------------------
1475 Fill in Event data and post to the Main FSM
1476 ------------------------------------------------------------------------*/
1477 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 wdiEventData.pEventData = pwdiStopParams;
1479 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1480 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001481 wdiEventData.pUserData = pUserData;
1482
1483 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1484
1485}/*WDI_Stop*/
1486
1487
1488
1489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001490 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001491 needs to interact with DAL. DAL will free its control
1492 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001493
1494 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 WDI_Stop must have been called.
1497
1498 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001499
Jeff Johnson295189b2012-06-20 16:38:30 -07001500 @see WDI_Stop
1501 @return Result of the function call
1502*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001503WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001504WDI_Close
1505(
1506 void
1507)
1508{
1509 wpt_uint8 i;
1510 WDI_EventInfoType wdiEventData;
1511 wpt_status wptStatus;
1512 wpt_status eventStatus;
1513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1514
1515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 ------------------------------------------------------------------------*/
1518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1519 {
1520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1521 "WDI API call before module is initialized - Fail request");
1522
Jeff Johnsone7245742012-09-05 17:12:55 -07001523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 }
1525
1526 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1527 (the control transport will be closed by the FSM and we'll want
1528 to wait until that completes)*/
1529 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001533 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 /* fall through and try to finish closing via the FSM */
1535 }
1536
1537 /*------------------------------------------------------------------------
1538 Fill in Event data and post to the Main FSM
1539 ------------------------------------------------------------------------*/
1540 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001541 wdiEventData.pEventData = NULL;
1542 wdiEventData.uEventDataSize = 0;
1543 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001544 wdiEventData.pUserData = NULL;
1545
1546 gWDIInitialized = eWLAN_PAL_FALSE;
1547
1548 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1549
1550 /*Wait for WCTS to close the control transport
1551 (but only if we were able to reset the event flag*/
1552 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1553 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 WDI_WCTS_ACTION_TIMEOUT);
1556 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1557 {
1558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001559 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 }
1561 }
1562
1563 /* Destroy the WCTS action event */
1564 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1565 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1566 {
1567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1568 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001569 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 }
1571
1572 /* Destroy the Set Power State event */
1573 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1574 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1575 {
1576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1577 "WDI Close failed to destroy an event");
1578
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 }
1581
1582 /*------------------------------------------------------------------------
1583 Closes the Data Path Utility Module
1584 ------------------------------------------------------------------------*/
1585 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1588 "WDI Init failed to close the DP Util Module");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*destroy the BSS sessions pending Queue */
1594 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1595 {
1596 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1597 }
1598
1599 /* destroy the WDI Pending Assoc Id Request Queue*/
1600 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1601
1602 /* destroy the WDI Pending Request Queue*/
1603 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001604
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 /*destroy the response timer */
1606 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1607
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001608 /*destroy the SSR timer */
1609 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1610
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 /*invalidate the main synchro mutex */
1612 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1613 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1614 {
1615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1616 "Failed to delete mutex %d", wptStatus);
1617 WDI_ASSERT(0);
1618 }
1619
1620 /*Clear control block. note that this will clear the "magic"
1621 which will inhibit all asynchronous callbacks*/
1622 WDI_CleanCB(&gWDICb);
1623
1624 return wptStatus;
1625
1626}/*WDI_Close*/
1627
1628/**
1629 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1630 This will do most of the WDI stop & close
1631 operations without doing any handshake with Riva
1632
1633 This will also make sure that the control transport
1634 will NOT be closed.
1635
1636 This request will not be queued.
1637
1638
1639 WDI_Start must have been called.
1640
1641 @param closeTransport: Close control channel if this is set
1642
1643 @return Result of the function call
1644*/
1645WDI_Status
1646WDI_Shutdown
1647(
1648 wpt_boolean closeTransport
1649)
1650{
1651 WDI_EventInfoType wdiEventData;
1652 wpt_status wptStatus;
1653 int i = 0;
1654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1655
1656 /*------------------------------------------------------------------------
1657 Sanity Check
1658 ------------------------------------------------------------------------*/
1659 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1660 {
1661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1662 "WDI API call before module is initialized - Fail request");
1663
1664 return WDI_STATUS_E_NOT_ALLOWED;
1665 }
1666
1667 /*------------------------------------------------------------------------
1668 Fill in Event data and post to the Main FSM
1669 ------------------------------------------------------------------------*/
1670 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1671 wdiEventData.pEventData = NULL;
1672 wdiEventData.uEventDataSize = 0;
1673
1674 /* Shutdown will not be queued, if the state is busy timer will be
1675 * stopped & this message will be processed.*/
1676 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1677 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 }
1682 /* Destroy the Set Power State event */
1683 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1684 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1687 "WDI Close failed to destroy an event");
1688
1689 WDI_ASSERT(0);
1690 }
1691 /*------------------------------------------------------------------------
1692 Closes the Data Path Utility Module
1693 ------------------------------------------------------------------------*/
1694 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1697 "WDI Init failed to close the DP Util Module");
1698
1699 WDI_ASSERT(0);
1700 }
1701 if ( closeTransport )
1702 {
1703 /* Close control transport, called from module unload */
1704 WCTS_CloseTransport(gWDICb.wctsHandle);
1705 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001706 else
1707 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001708 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001709 the pending messages in the transport queue */
1710 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1711 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 /*destroy the BSS sessions pending Queue */
1713 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1714 {
1715 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1716 }
1717
1718 /* destroy the WDI Pending Assoc Id Request Queue*/
1719 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1720 /* destroy the WDI Pending Request Queue*/
1721 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1722 /*destroy the response timer */
1723 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001724 /*destroy the SSR timer */
1725 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001726
1727 /*invalidate the main synchro mutex */
1728 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1729 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1730 {
1731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001732 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 WDI_ASSERT(0);
1734 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001735 /* Free the global variables */
1736 wpalMemoryFree(gpHostWlanFeatCaps);
1737 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001738 gpHostWlanFeatCaps = NULL;
1739 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 /*Clear control block. note that this will clear the "magic"
1741 which will inhibit all asynchronous callbacks*/
1742 WDI_CleanCB(&gWDICb);
1743 return wptStatus;
1744
1745}/*WDI_Shutdown*/
1746
1747
Jeff Johnsone7245742012-09-05 17:12:55 -07001748/*========================================================================
1749
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001751
Jeff Johnson295189b2012-06-20 16:38:30 -07001752==========================================================================*/
1753
1754/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001756 the WLAN Device to get ready for a scan procedure. Upon
1757 the call of this API the WLAN DAL will pack and send a
1758 HAL Init Scan request message to the lower RIVA
1759 sub-system if DAL is in state STARTED.
1760
1761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001763
1764 WDI_Start must have been called.
1765
1766 @param wdiInitScanParams: the init scan parameters as specified
1767 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001768
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 wdiInitScanRspCb: callback for passing back the response
1770 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001771
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001773 callback
1774
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 @see WDI_Start
1776 @return Result of the function call
1777*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001778WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001779WDI_InitScanReq
1780(
1781 WDI_InitScanReqParamsType* pwdiInitScanParams,
1782 WDI_InitScanRspCb wdiInitScanRspCb,
1783 void* pUserData
1784)
1785{
1786 WDI_EventInfoType wdiEventData;
1787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1788
1789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 ------------------------------------------------------------------------*/
1792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1793 {
1794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1795 "WDI API call before module is initialized - Fail request");
1796
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 }
1799
1800 /*------------------------------------------------------------------------
1801 Fill in Event data and post to the Main FSM
1802 ------------------------------------------------------------------------*/
1803 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 wdiEventData.pEventData = pwdiInitScanParams;
1805 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1806 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 wdiEventData.pUserData = pUserData;
1808
1809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1810
1811}/*WDI_InitScanReq*/
1812
1813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001814 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 wishes to change the Scan channel on the WLAN Device.
1816 Upon the call of this API the WLAN DAL will pack and
1817 send a HAL Start Scan request message to the lower RIVA
1818 sub-system if DAL is in state STARTED.
1819
1820 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001822
1823 WDI_InitScanReq must have been called.
1824
Jeff Johnsone7245742012-09-05 17:12:55 -07001825 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001827
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 wdiStartScanRspCb: callback for passing back the
1829 response of the start scan operation received from the
1830 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001831
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001833 callback
1834
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 @see WDI_InitScanReq
1836 @return Result of the function call
1837*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001838WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001839WDI_StartScanReq
1840(
1841 WDI_StartScanReqParamsType* pwdiStartScanParams,
1842 WDI_StartScanRspCb wdiStartScanRspCb,
1843 void* pUserData
1844)
1845{
1846 WDI_EventInfoType wdiEventData;
1847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1848
1849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001850 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 ------------------------------------------------------------------------*/
1852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1853 {
1854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1855 "WDI API call before module is initialized - Fail request");
1856
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001858 }
1859
1860 /*------------------------------------------------------------------------
1861 Fill in Event data and post to the Main FSM
1862 ------------------------------------------------------------------------*/
1863 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001864 wdiEventData.pEventData = pwdiStartScanParams;
1865 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1866 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 wdiEventData.pUserData = pUserData;
1868
1869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1870
1871}/*WDI_StartScanReq*/
1872
1873
1874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 wants to end scanning for a particular channel that it
1877 had set before by calling Scan Start on the WLAN Device.
1878 Upon the call of this API the WLAN DAL will pack and
1879 send a HAL End Scan request message to the lower RIVA
1880 sub-system if DAL is in state STARTED.
1881
1882 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001884
1885 WDI_StartScanReq must have been called.
1886
Jeff Johnsone7245742012-09-05 17:12:55 -07001887 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001889
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 wdiEndScanRspCb: callback for passing back the response
1891 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001892
Jeff Johnson295189b2012-06-20 16:38:30 -07001893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001894 callback
1895
Jeff Johnson295189b2012-06-20 16:38:30 -07001896 @see WDI_StartScanReq
1897 @return Result of the function call
1898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001900WDI_EndScanReq
1901(
1902 WDI_EndScanReqParamsType* pwdiEndScanParams,
1903 WDI_EndScanRspCb wdiEndScanRspCb,
1904 void* pUserData
1905)
1906{
1907 WDI_EventInfoType wdiEventData;
1908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1909
1910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 ------------------------------------------------------------------------*/
1913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1914 {
1915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1916 "WDI API call before module is initialized - Fail request");
1917
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 }
1920
1921 /*------------------------------------------------------------------------
1922 Fill in Event data and post to the Main FSM
1923 ------------------------------------------------------------------------*/
1924 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 wdiEventData.pEventData = pwdiEndScanParams;
1926 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1927 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 wdiEventData.pUserData = pUserData;
1929
1930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1931
1932}/*WDI_EndScanReq*/
1933
1934
1935/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001936 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 completed the scan process on the WLAN Device. Upon the
1938 call of this API the WLAN DAL will pack and send a HAL
1939 Finish Scan Request request message to the lower RIVA
1940 sub-system if DAL is in state STARTED.
1941
1942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001944
1945 WDI_InitScanReq must have been called.
1946
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001949
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wdiFinishScanRspCb: callback for passing back the
1951 response of the finish scan operation received from the
1952 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001953
Jeff Johnson295189b2012-06-20 16:38:30 -07001954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001955 callback
1956
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 @see WDI_InitScanReq
1958 @return Result of the function call
1959*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001961WDI_FinishScanReq
1962(
1963 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1964 WDI_FinishScanRspCb wdiFinishScanRspCb,
1965 void* pUserData
1966)
1967{
1968 WDI_EventInfoType wdiEventData;
1969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1970
1971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 ------------------------------------------------------------------------*/
1974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1975 {
1976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1977 "WDI API call before module is initialized - Fail request");
1978
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 }
1981
1982 /*------------------------------------------------------------------------
1983 Fill in Event data and post to the Main FSM
1984 ------------------------------------------------------------------------*/
1985 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 wdiEventData.pEventData = pwdiFinishScanParams;
1987 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1988 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 wdiEventData.pUserData = pUserData;
1990
1991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1992
1993}/*WDI_FinishScanReq*/
1994
Jeff Johnsone7245742012-09-05 17:12:55 -07001995/*========================================================================
1996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001998
Jeff Johnson295189b2012-06-20 16:38:30 -07001999==========================================================================*/
2000
2001/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 to start an association procedure to a BSS. Upon the
2004 call of this API the WLAN DAL will pack and send a HAL
2005 Join request message to the lower RIVA sub-system if
2006 DAL is in state STARTED.
2007
2008 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002010
2011 WDI_Start must have been called.
2012
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002015
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 wdiJoinRspCb: callback for passing back the response of
2017 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002018
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 callback
2021
Jeff Johnson295189b2012-06-20 16:38:30 -07002022 @see WDI_Start
2023 @return Result of the function call
2024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002026WDI_JoinReq
2027(
2028 WDI_JoinReqParamsType* pwdiJoinParams,
2029 WDI_JoinRspCb wdiJoinRspCb,
2030 void* pUserData
2031)
2032{
2033 WDI_EventInfoType wdiEventData;
2034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2035
2036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 ------------------------------------------------------------------------*/
2039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2040 {
2041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2042 "WDI API call before module is initialized - Fail request");
2043
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 }
2046
2047 /*------------------------------------------------------------------------
2048 Fill in Event data and post to the Main FSM
2049 ------------------------------------------------------------------------*/
2050 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 wdiEventData.pEventData = pwdiJoinParams;
2052 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2053 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 wdiEventData.pUserData = pUserData;
2055
2056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2057
2058}/*WDI_JoinReq*/
2059
2060/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 wishes to configure the newly acquired or in process of
2063 being acquired BSS to the HW . Upon the call of this API
2064 the WLAN DAL will pack and send a HAL Config BSS request
2065 message to the lower RIVA sub-system if DAL is in state
2066 STARTED.
2067
2068 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002070
2071 WDI_JoinReq must have been called.
2072
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002074 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002075
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 wdiConfigBSSRspCb: callback for passing back the
2077 response of the config BSS operation received from the
2078 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002079
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002081 callback
2082
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 @see WDI_JoinReq
2084 @return Result of the function call
2085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002087WDI_ConfigBSSReq
2088(
2089 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2090 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2091 void* pUserData
2092)
2093{
2094 WDI_EventInfoType wdiEventData;
2095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2096
2097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 ------------------------------------------------------------------------*/
2100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2101 {
2102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2103 "WDI API call before module is initialized - Fail request");
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 }
2107
2108 /*------------------------------------------------------------------------
2109 Fill in Event data and post to the Main FSM
2110 ------------------------------------------------------------------------*/
2111 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 wdiEventData.pEventData = pwdiConfigBSSParams;
2113 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2114 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 wdiEventData.pUserData = pUserData;
2116
2117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2118
2119}/*WDI_ConfigBSSReq*/
2120
2121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 disassociating from the BSS and wishes to notify HW.
2124 Upon the call of this API the WLAN DAL will pack and
2125 send a HAL Del BSS request message to the lower RIVA
2126 sub-system if DAL is in state STARTED.
2127
2128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002130
2131 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2132
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002134 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002135
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 wdiDelBSSRspCb: callback for passing back the response
2137 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002138
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 callback
2141
2142 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 @return Result of the function call
2144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002146WDI_DelBSSReq
2147(
2148 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2149 WDI_DelBSSRspCb wdiDelBSSRspCb,
2150 void* pUserData
2151)
2152{
2153 WDI_EventInfoType wdiEventData;
2154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2155
2156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 ------------------------------------------------------------------------*/
2159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2160 {
2161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2162 "WDI API call before module is initialized - Fail request");
2163
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 }
2166
2167 /*------------------------------------------------------------------------
2168 Fill in Event data and post to the Main FSM
2169 ------------------------------------------------------------------------*/
2170 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 wdiEventData.pEventData = pwdiDelBSSParams;
2172 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2173 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 wdiEventData.pUserData = pUserData;
2175
2176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2177
2178}/*WDI_DelBSSReq*/
2179
2180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 associated to a BSS and wishes to configure HW for
2183 associated state. Upon the call of this API the WLAN DAL
2184 will pack and send a HAL Post Assoc request message to
2185 the lower RIVA sub-system if DAL is in state STARTED.
2186
2187 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002189
2190 WDI_JoinReq must have been called.
2191
2192 @param wdiPostAssocReqParams: the assoc parameters as specified
2193 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002194
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 wdiPostAssocRspCb: callback for passing back the
2196 response of the post assoc operation received from the
2197 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002198
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002200 callback
2201
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 @see WDI_JoinReq
2203 @return Result of the function call
2204*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002205WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002206WDI_PostAssocReq
2207(
2208 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2209 WDI_PostAssocRspCb wdiPostAssocRspCb,
2210 void* pUserData
2211)
2212{
2213 WDI_EventInfoType wdiEventData;
2214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2215
2216 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 ------------------------------------------------------------------------*/
2219 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2220 {
2221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2222 "WDI API call before module is initialized - Fail request");
2223
Jeff Johnsone7245742012-09-05 17:12:55 -07002224 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 }
2226
2227 /*------------------------------------------------------------------------
2228 Fill in Event data and post to the Main FSM
2229 ------------------------------------------------------------------------*/
2230 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 wdiEventData.pEventData = pwdiPostAssocReqParams;
2232 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2233 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 wdiEventData.pUserData = pUserData;
2235
2236 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2237
2238}/*WDI_PostAssocReq*/
2239
2240/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 association with another STA has ended and the station
2243 must be deleted from HW. Upon the call of this API the
2244 WLAN DAL will pack and send a HAL Del STA request
2245 message to the lower RIVA sub-system if DAL is in state
2246 STARTED.
2247
2248 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002250
2251 WDI_PostAssocReq must have been called.
2252
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002254 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiDelSTARspCb: callback for passing back the response
2257 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002258
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 callback
2261
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 @see WDI_PostAssocReq
2263 @return Result of the function call
2264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002266WDI_DelSTAReq
2267(
2268 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2269 WDI_DelSTARspCb wdiDelSTARspCb,
2270 void* pUserData
2271)
2272{
2273 WDI_EventInfoType wdiEventData;
2274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2275
2276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 ------------------------------------------------------------------------*/
2279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2280 {
2281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2282 "WDI API call before module is initialized - Fail request");
2283
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 }
2286
2287 /*------------------------------------------------------------------------
2288 Fill in Event data and post to the Main FSM
2289 ------------------------------------------------------------------------*/
2290 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 wdiEventData.pEventData = pwdiDelSTAParams;
2292 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2293 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002294 wdiEventData.pUserData = pUserData;
2295
2296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2297
2298}/*WDI_DelSTAReq*/
2299
Jeff Johnsone7245742012-09-05 17:12:55 -07002300/*========================================================================
2301
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002303
Jeff Johnson295189b2012-06-20 16:38:30 -07002304==========================================================================*/
2305
2306/**
2307 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2308 install a BSS encryption key on the HW. Upon the call of this
2309 API the WLAN DAL will pack and send a Set BSS Key request
2310 message to the lower RIVA sub-system if DAL is in state
2311 STARTED.
2312
2313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002315
2316 WDI_PostAssocReq must have been called.
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002320
Jeff Johnson295189b2012-06-20 16:38:30 -07002321 wdiSetBSSKeyRspCb: callback for passing back the
2322 response of the set BSS Key operation received from the
2323 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002324
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002326 callback
2327
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 @see WDI_PostAssocReq
2329 @return Result of the function call
2330*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002332WDI_SetBSSKeyReq
2333(
2334 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2335 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2336 void* pUserData
2337)
2338{
2339 WDI_EventInfoType wdiEventData;
2340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2341
2342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 ------------------------------------------------------------------------*/
2345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2346 {
2347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2348 "WDI API call before module is initialized - Fail request");
2349
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 }
2352
2353 /*------------------------------------------------------------------------
2354 Fill in Event data and post to the Main FSM
2355 ------------------------------------------------------------------------*/
2356 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2358 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2359 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 wdiEventData.pUserData = pUserData;
2361
2362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2363
2364}/*WDI_SetBSSKeyReq*/
2365
2366/**
2367 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2368 uninstall a BSS key from HW. Upon the call of this API the
2369 WLAN DAL will pack and send a HAL Remove BSS Key request
2370 message to the lower RIVA sub-system if DAL is in state
2371 STARTED.
2372
2373 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002375
2376 WDI_SetBSSKeyReq must have been called.
2377
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002380
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 wdiRemoveBSSKeyRspCb: callback for passing back the
2382 response of the remove BSS key operation received from
2383 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002384
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 callback
2387
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 @see WDI_SetBSSKeyReq
2389 @return Result of the function call
2390*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002392WDI_RemoveBSSKeyReq
2393(
2394 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2395 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2396 void* pUserData
2397)
2398{
2399 WDI_EventInfoType wdiEventData;
2400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2401
2402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 ------------------------------------------------------------------------*/
2405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2406 {
2407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2408 "WDI API call before module is initialized - Fail request");
2409
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 }
2412
2413 /*------------------------------------------------------------------------
2414 Fill in Event data and post to the Main FSM
2415 ------------------------------------------------------------------------*/
2416 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002417 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2418 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2419 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 wdiEventData.pUserData = pUserData;
2421
2422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2423
2424}/*WDI_RemoveBSSKeyReq*/
2425
2426
2427/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002428 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 ready to install a STA(ast) encryption key in HW. Upon
2430 the call of this API the WLAN DAL will pack and send a
2431 HAL Set STA Key request message to the lower RIVA
2432 sub-system if DAL is in state STARTED.
2433
2434 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002435 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002436
2437 WDI_PostAssocReq must have been called.
2438
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002441
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiSetSTAKeyRspCb: callback for passing back the
2443 response of the set STA key operation received from the
2444 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002445
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 callback
2448
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 @see WDI_PostAssocReq
2450 @return Result of the function call
2451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002453WDI_SetSTAKeyReq
2454(
2455 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2456 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2457 void* pUserData
2458)
2459{
2460 WDI_EventInfoType wdiEventData;
2461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2462
2463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 ------------------------------------------------------------------------*/
2466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2467 {
2468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2469 "WDI API call before module is initialized - Fail request");
2470
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 }
2473
2474 /*------------------------------------------------------------------------
2475 Fill in Event data and post to the Main FSM
2476 ------------------------------------------------------------------------*/
2477 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2479 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2480 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiEventData.pUserData = pUserData;
2482
2483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2484
2485}/*WDI_SetSTAKeyReq*/
2486
2487
2488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002489 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 wants to uninstall a previously set STA key in HW. Upon
2491 the call of this API the WLAN DAL will pack and send a
2492 HAL Remove STA Key request message to the lower RIVA
2493 sub-system if DAL is in state STARTED.
2494
2495 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002496 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002497
2498 WDI_SetSTAKeyReq must have been called.
2499
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002502
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 wdiRemoveSTAKeyRspCb: callback for passing back the
2504 response of the remove STA key operation received from
2505 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 callback
2509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 @see WDI_SetSTAKeyReq
2511 @return Result of the function call
2512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002514WDI_RemoveSTAKeyReq
2515(
2516 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2517 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2518 void* pUserData
2519)
2520{
2521 WDI_EventInfoType wdiEventData;
2522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2523
2524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 ------------------------------------------------------------------------*/
2527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2528 {
2529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2530 "WDI API call before module is initialized - Fail request");
2531
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 }
2534
2535 /*------------------------------------------------------------------------
2536 Fill in Event data and post to the Main FSM
2537 ------------------------------------------------------------------------*/
2538 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2540 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2541 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 wdiEventData.pUserData = pUserData;
2543
2544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2545
2546}/*WDI_RemoveSTAKeyReq*/
2547
2548
2549/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 wants to install a STA Bcast encryption key on the HW.
2552 Upon the call of this API the WLAN DAL will pack and
2553 send a HAL Start request message to the lower RIVA
2554 sub-system if DAL is in state STARTED.
2555
2556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002558
2559 WDI_PostAssocReq must have been called.
2560
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002563
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiSetSTABcastKeyRspCb: callback for passing back the
2565 response of the set BSS Key operation received from the
2566 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002567
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 callback
2570
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 @see WDI_PostAssocReq
2572 @return Result of the function call
2573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002575WDI_SetSTABcastKeyReq
2576(
2577 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2578 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2579 void* pUserData
2580)
2581
2582{
2583 WDI_EventInfoType wdiEventData;
2584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2585
2586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 ------------------------------------------------------------------------*/
2589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2590 {
2591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2592 "WDI API call before module is initialized - Fail request");
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 }
2596
2597 /*------------------------------------------------------------------------
2598 Fill in Event data and post to the Main FSM
2599 ------------------------------------------------------------------------*/
2600 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2602 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2603 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 wdiEventData.pUserData = pUserData;
2605
2606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2607
2608}/*WDI_SetSTABcastKeyReq*/
2609
2610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 MAC wants to uninstall a STA Bcast key from HW. Upon the
2613 call of this API the WLAN DAL will pack and send a HAL
2614 Remove STA Bcast Key request message to the lower RIVA
2615 sub-system if DAL is in state STARTED.
2616
2617 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002618 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002619
2620 WDI_SetSTABcastKeyReq must have been called.
2621
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 parameters as specified by the Device
2624 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002625
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2627 response of the remove STA Bcast key operation received
2628 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002629
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 callback
2632
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 @see WDI_SetSTABcastKeyReq
2634 @return Result of the function call
2635*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002637WDI_RemoveSTABcastKeyReq
2638(
2639 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2640 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2641 void* pUserData
2642)
2643{
2644 WDI_EventInfoType wdiEventData;
2645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2646
2647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 ------------------------------------------------------------------------*/
2650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2651 {
2652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2653 "WDI API call before module is initialized - Fail request");
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 }
2657
2658 /*------------------------------------------------------------------------
2659 Fill in Event data and post to the Main FSM
2660 ------------------------------------------------------------------------*/
2661 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2663 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2664 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 wdiEventData.pUserData = pUserData;
2666
2667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2668
2669}/*WDI_RemoveSTABcastKeyReq*/
2670
2671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 MAC wants to set Max Tx Power to HW. Upon the
2674 call of this API the WLAN DAL will pack and send a HAL
2675 Remove STA Bcast Key request message to the lower RIVA
2676 sub-system if DAL is in state STARTED.
2677
2678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002680
2681 WDI_SetSTABcastKeyReq must have been called.
2682
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 parameters as specified by the Device
2685 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002686
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2688 response of the remove STA Bcast key operation received
2689 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002690
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 callback
2693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 @see WDI_SetMaxTxPowerReq
2695 @return Result of the function call
2696*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002697WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002698WDI_SetMaxTxPowerReq
2699(
2700 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2701 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2702 void* pUserData
2703)
2704{
2705 WDI_EventInfoType wdiEventData;
2706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2707
2708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 ------------------------------------------------------------------------*/
2711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2712 {
2713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2714 "WDI API call before module is initialized - Fail request");
2715
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 }
2718
2719 /*------------------------------------------------------------------------
2720 Fill in Event data and post to the Main FSM
2721 ------------------------------------------------------------------------*/
2722 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2724 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2725 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 wdiEventData.pUserData = pUserData;
2727
2728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2729}
2730
schangd82195a2013-03-13 18:41:24 -07002731/**
2732 @brief WDI_SetTxPowerReq will be called when the upper
2733 MAC wants to set Tx Power to HW.
2734 In state BUSY this request will be queued. Request won't
2735 be allowed in any other state.
2736
2737
2738 @param pwdiSetTxPowerParams: set TS Power parameters
2739 BSSID and target TX Power with dbm included
2740
2741 wdiReqStatusCb: callback for passing back the response
2742
2743 pUserData: user data will be passed back with the
2744 callback
2745
2746 @return Result of the function call
2747*/
2748WDI_Status
2749WDI_SetTxPowerReq
2750(
2751 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2752 WDA_SetTxPowerRspCb wdiReqStatusCb,
2753 void* pUserData
2754)
2755{
2756 WDI_EventInfoType wdiEventData;
2757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2758
2759 /*------------------------------------------------------------------------
2760 Sanity Check
2761 ------------------------------------------------------------------------*/
2762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2763 {
2764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2765 "WDI API call before module is initialized - Fail request");
2766
2767 return WDI_STATUS_E_NOT_ALLOWED;
2768 }
2769
2770 /*------------------------------------------------------------------------
2771 Fill in Event data and post to the Main FSM
2772 ------------------------------------------------------------------------*/
2773 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2774 wdiEventData.pEventData = pwdiSetTxPowerParams;
2775 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2776 wdiEventData.pCBfnc = wdiReqStatusCb;
2777 wdiEventData.pUserData = pUserData;
2778
2779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2780}
2781
Jeff Johnson295189b2012-06-20 16:38:30 -07002782#ifdef FEATURE_WLAN_CCX
2783WDI_Status
2784WDI_TSMStatsReq
2785(
2786 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2787 WDI_TsmRspCb wdiReqStatusCb,
2788 void* pUserData
2789)
2790{
2791 WDI_EventInfoType wdiEventData;
2792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 /*------------------------------------------------------------------------
2794 Sanity Check
2795 ------------------------------------------------------------------------*/
2796 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2797 {
2798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2799 "WDI API call before module is initialized - Fail request");
2800
2801 return WDI_STATUS_E_NOT_ALLOWED;
2802 }
2803
2804 /*------------------------------------------------------------------------
2805 Fill in Event data and post to the Main FSM
2806 ------------------------------------------------------------------------*/
2807 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2808 wdiEventData.pEventData = pwdiTsmReqParams;
2809 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2810 wdiEventData.pCBfnc = wdiReqStatusCb;
2811 wdiEventData.pUserData = pUserData;
2812
2813 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2814
2815}
2816#endif
2817
2818/*========================================================================
2819
2820 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822==========================================================================*/
2823
2824/**
2825 @brief WDI_AddTSReq will be called when the upper MAC to inform
2826 the device of a successful add TSpec negotiation. HW
2827 needs to receive the TSpec Info from the UMAC in order
2828 to configure properly the QoS data traffic. Upon the
2829 call of this API the WLAN DAL will pack and send a HAL
2830 Add TS request message to the lower RIVA sub-system if
2831 DAL is in state STARTED.
2832
2833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002835
2836 WDI_PostAssocReq must have been called.
2837
2838 @param wdiAddTsReqParams: the add TS parameters as specified by
2839 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 wdiAddTsRspCb: callback for passing back the response of
2842 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 callback
2846
Jeff Johnson295189b2012-06-20 16:38:30 -07002847 @see WDI_PostAssocReq
2848 @return Result of the function call
2849*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002850WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002851WDI_AddTSReq
2852(
2853 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2854 WDI_AddTsRspCb wdiAddTsRspCb,
2855 void* pUserData
2856)
2857{
2858 WDI_EventInfoType wdiEventData;
2859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2860
2861 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 ------------------------------------------------------------------------*/
2864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2865 {
2866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2867 "WDI API call before module is initialized - Fail request");
2868
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 }
2871
2872 /*------------------------------------------------------------------------
2873 Fill in Event data and post to the Main FSM
2874 ------------------------------------------------------------------------*/
2875 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 wdiEventData.pEventData = pwdiAddTsReqParams;
2877 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2878 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wdiEventData.pUserData = pUserData;
2880
2881 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2882
2883}/*WDI_AddTSReq*/
2884
2885
2886
2887/**
2888 @brief WDI_DelTSReq will be called when the upper MAC has ended
2889 admission on a specific AC. This is to inform HW that
2890 QoS traffic parameters must be rest. Upon the call of
2891 this API the WLAN DAL will pack and send a HAL Del TS
2892 request message to the lower RIVA sub-system if DAL is
2893 in state STARTED.
2894
2895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002897
2898 WDI_AddTSReq must have been called.
2899
2900 @param wdiDelTsReqParams: the del TS parameters as specified by
2901 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 wdiDelTsRspCb: callback for passing back the response of
2904 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002905
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 callback
2908
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 @see WDI_AddTSReq
2910 @return Result of the function call
2911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002913WDI_DelTSReq
2914(
2915 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2916 WDI_DelTsRspCb wdiDelTsRspCb,
2917 void* pUserData
2918)
2919{
2920 WDI_EventInfoType wdiEventData;
2921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2922
2923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 ------------------------------------------------------------------------*/
2926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2927 {
2928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2929 "WDI API call before module is initialized - Fail request");
2930
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 }
2933
2934 /*------------------------------------------------------------------------
2935 Fill in Event data and post to the Main FSM
2936 ------------------------------------------------------------------------*/
2937 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 wdiEventData.pEventData = pwdiDelTsReqParams;
2939 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2940 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002941 wdiEventData.pUserData = pUserData;
2942
2943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2944
2945}/*WDI_DelTSReq*/
2946
2947
2948
2949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 wishes to update the EDCA parameters used by HW for QoS
2952 data traffic. Upon the call of this API the WLAN DAL
2953 will pack and send a HAL Update EDCA Params request
2954 message to the lower RIVA sub-system if DAL is in state
2955 STARTED.
2956
2957 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002959
2960 WDI_PostAssocReq must have been called.
2961
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002964
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 wdiUpdateEDCAParamsRspCb: callback for passing back the
2966 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002969 callback
2970
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 @see WDI_PostAssocReq
2972 @return Result of the function call
2973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002975WDI_UpdateEDCAParams
2976(
2977 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2978 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2979 void* pUserData
2980)
2981{
2982 WDI_EventInfoType wdiEventData;
2983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2984
2985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 ------------------------------------------------------------------------*/
2988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2989 {
2990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2991 "WDI API call before module is initialized - Fail request");
2992
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002994 }
2995
2996 /*------------------------------------------------------------------------
2997 Fill in Event data and post to the Main FSM
2998 ------------------------------------------------------------------------*/
2999 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3001 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3002 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 wdiEventData.pUserData = pUserData;
3004
3005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3006
3007}/*WDI_UpdateEDCAParams*/
3008
3009
3010/**
3011 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3012 successfully a BA session and needs to notify the HW for
3013 the appropriate settings to take place. Upon the call of
3014 this API the WLAN DAL will pack and send a HAL Add BA
3015 request message to the lower RIVA sub-system if DAL is
3016 in state STARTED.
3017
3018 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003020
3021 WDI_PostAssocReq must have been called.
3022
3023 @param wdiAddBAReqParams: the add BA parameters as specified by
3024 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 wdiAddBARspCb: callback for passing back the response of
3027 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003028
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 callback
3031
Jeff Johnson295189b2012-06-20 16:38:30 -07003032 @see WDI_PostAssocReq
3033 @return Result of the function call
3034*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003035WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003036WDI_AddBASessionReq
3037(
3038 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3039 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3040 void* pUserData
3041)
3042{
3043 WDI_EventInfoType wdiEventData;
3044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3045
3046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 ------------------------------------------------------------------------*/
3049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3050 {
3051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3052 "WDI API call before module is initialized - Fail request");
3053
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 }
3056
3057 /*------------------------------------------------------------------------
3058 Fill in Event data and post to the Main FSM
3059 ------------------------------------------------------------------------*/
3060 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3062 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3063 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 wdiEventData.pUserData = pUserData;
3065
3066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3067
3068}/*WDI_AddBASessionReq*/
3069
3070/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 inform HW that it has deleted a previously created BA
3073 session. Upon the call of this API the WLAN DAL will
3074 pack and send a HAL Del BA request message to the lower
3075 RIVA sub-system if DAL is in state STARTED.
3076
3077 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003079
3080 WDI_AddBAReq must have been called.
3081
3082 @param wdiDelBAReqParams: the del BA parameters as specified by
3083 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 wdiDelBARspCb: callback for passing back the response of
3086 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003087
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 callback
3090
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 @see WDI_AddBAReq
3092 @return Result of the function call
3093*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003095WDI_DelBAReq
3096(
3097 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3098 WDI_DelBARspCb wdiDelBARspCb,
3099 void* pUserData
3100)
3101{
3102 WDI_EventInfoType wdiEventData;
3103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3104
3105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 ------------------------------------------------------------------------*/
3108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3109 {
3110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3111 "WDI API call before module is initialized - Fail request");
3112
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 }
3115
3116 /*------------------------------------------------------------------------
3117 Fill in Event data and post to the Main FSM
3118 ------------------------------------------------------------------------*/
3119 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 wdiEventData.pEventData = pwdiDelBAReqParams;
3121 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3122 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 wdiEventData.pUserData = pUserData;
3124
3125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3126
3127}/*WDI_DelBAReq*/
3128
Jeff Johnsone7245742012-09-05 17:12:55 -07003129/*========================================================================
3130
Jeff Johnson295189b2012-06-20 16:38:30 -07003131 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133==========================================================================*/
3134
3135/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 wants to set the power save related configurations of
3138 the WLAN Device. Upon the call of this API the WLAN DAL
3139 will pack and send a HAL Update CFG request message to
3140 the lower RIVA sub-system if DAL is in state STARTED.
3141
3142 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003143 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003144
3145 WDI_Start must have been called.
3146
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003149
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 wdiSetPwrSaveCfgCb: callback for passing back the
3151 response of the set power save cfg operation received
3152 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003153
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 callback
3156
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 @return Result of the function call
3159*/
3160WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003161WDI_SetPwrSaveCfgReq
3162(
3163 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3164 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3165 void* pUserData
3166)
3167{
3168 WDI_EventInfoType wdiEventData;
3169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3170
3171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 ------------------------------------------------------------------------*/
3174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3175 {
3176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3177 "WDI API call before module is initialized - Fail request");
3178
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 }
3181
3182 /*------------------------------------------------------------------------
3183 Fill in Event data and post to the Main FSM
3184 ------------------------------------------------------------------------*/
3185 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 wdiEventData.pEventData = pwdiPowerSaveCfg;
3187 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3188 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 wdiEventData.pUserData = pUserData;
3190
3191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3192
3193}/*WDI_SetPwrSaveCfgReq*/
3194
3195/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 request the device to get into IMPS power state. Upon
3198 the call of this API the WLAN DAL will send a HAL Enter
3199 IMPS request message to the lower RIVA sub-system if DAL
3200 is in state STARTED.
3201
3202 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003204
Jeff Johnsone7245742012-09-05 17:12:55 -07003205
3206 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 response of the Enter IMPS operation received from the
3208 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003209
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 callback
3212
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 @see WDI_Start
3214 @return Result of the function call
3215*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003216WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003217WDI_EnterImpsReq
3218(
3219 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3220 void* pUserData
3221)
3222{
3223 WDI_EventInfoType wdiEventData;
3224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3225
3226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 ------------------------------------------------------------------------*/
3229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3230 {
3231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3232 "WDI API call before module is initialized - Fail request");
3233
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 }
3236
3237 /*------------------------------------------------------------------------
3238 Fill in Event data and post to the Main FSM
3239 ------------------------------------------------------------------------*/
3240 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 wdiEventData.pEventData = NULL;
3242 wdiEventData.uEventDataSize = 0;
3243 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 wdiEventData.pUserData = pUserData;
3245
3246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3247
3248}/*WDI_EnterImpsReq*/
3249
3250/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 request the device to get out of IMPS power state. Upon
3253 the call of this API the WLAN DAL will send a HAL Exit
3254 IMPS request message to the lower RIVA sub-system if DAL
3255 is in state STARTED.
3256
3257 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003259
Jeff Johnson295189b2012-06-20 16:38:30 -07003260
Jeff Johnsone7245742012-09-05 17:12:55 -07003261
3262 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003264
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 callback
3267
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 @see WDI_Start
3269 @return Result of the function call
3270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003272WDI_ExitImpsReq
3273(
3274 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3275 void* pUserData
3276)
3277{
3278 WDI_EventInfoType wdiEventData;
3279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3280
3281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 ------------------------------------------------------------------------*/
3284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3285 {
3286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3287 "WDI API call before module is initialized - Fail request");
3288
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 }
3291
3292 /*------------------------------------------------------------------------
3293 Fill in Event data and post to the Main FSM
3294 ------------------------------------------------------------------------*/
3295 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003296 wdiEventData.pEventData = NULL;
3297 wdiEventData.uEventDataSize = 0;
3298 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003299 wdiEventData.pUserData = pUserData;
3300
3301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3302
3303}/*WDI_ExitImpsReq*/
3304
3305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 request the device to get into BMPS power state. Upon
3308 the call of this API the WLAN DAL will pack and send a
3309 HAL Enter BMPS request message to the lower RIVA
3310 sub-system if DAL is in state STARTED.
3311
3312 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003314
3315 WDI_PostAssocReq must have been called.
3316
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003319
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 wdiEnterBmpsRspCb: callback for passing back the
3321 response of the Enter BMPS operation received from the
3322 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003323
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 callback
3326
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 @see WDI_PostAssocReq
3328 @return Result of the function call
3329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003331WDI_EnterBmpsReq
3332(
3333 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3334 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3335 void* pUserData
3336)
3337{
3338 WDI_EventInfoType wdiEventData;
3339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3340
3341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 ------------------------------------------------------------------------*/
3344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3345 {
3346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3347 "WDI API call before module is initialized - Fail request");
3348
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 }
3351
3352 /*------------------------------------------------------------------------
3353 Fill in Event data and post to the Main FSM
3354 ------------------------------------------------------------------------*/
3355 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003356 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3357 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3358 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 wdiEventData.pUserData = pUserData;
3360
3361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3362
3363}/*WDI_EnterBmpsReq*/
3364
3365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 request the device to get out of BMPS power state. Upon
3368 the call of this API the WLAN DAL will pack and send a
3369 HAL Exit BMPS request message to the lower RIVA
3370 sub-system if DAL is in state STARTED.
3371
3372 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003374
3375 WDI_PostAssocReq must have been called.
3376
Jeff Johnsone7245742012-09-05 17:12:55 -07003377 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003379
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 wdiExitBmpsRspCb: callback for passing back the response
3381 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003382
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 callback
3385
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 @see WDI_PostAssocReq
3387 @return Result of the function call
3388*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003390WDI_ExitBmpsReq
3391(
3392 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3393 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3394 void* pUserData
3395)
3396{
3397 WDI_EventInfoType wdiEventData;
3398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3399
3400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 ------------------------------------------------------------------------*/
3403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3404 {
3405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3406 "WDI API call before module is initialized - Fail request");
3407
Jeff Johnsone7245742012-09-05 17:12:55 -07003408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 }
3410
3411 /*------------------------------------------------------------------------
3412 Fill in Event data and post to the Main FSM
3413 ------------------------------------------------------------------------*/
3414 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003415 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3416 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3417 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 wdiEventData.pUserData = pUserData;
3419
3420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3421
3422}/*WDI_ExitBmpsReq*/
3423
3424/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 request the device to get into UAPSD power state. Upon
3427 the call of this API the WLAN DAL will pack and send a
3428 HAL Enter UAPSD request message to the lower RIVA
3429 sub-system if DAL is in state STARTED.
3430
3431 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003433
3434 WDI_PostAssocReq must have been called.
3435 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003436
3437 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003439
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 wdiEnterUapsdRspCb: callback for passing back the
3441 response of the Enter UAPSD operation received from the
3442 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003443
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 callback
3446
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3448 @return Result of the function call
3449*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003450WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003451WDI_EnterUapsdReq
3452(
3453 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3454 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3455 void* pUserData
3456)
3457{
3458 WDI_EventInfoType wdiEventData;
3459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3460
3461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 ------------------------------------------------------------------------*/
3464 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3465 {
3466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3467 "WDI API call before module is initialized - Fail request");
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 }
3471
3472 /*------------------------------------------------------------------------
3473 Fill in Event data and post to the Main FSM
3474 ------------------------------------------------------------------------*/
3475 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3477 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3478 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 wdiEventData.pUserData = pUserData;
3480
3481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3482
3483}/*WDI_EnterUapsdReq*/
3484
3485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 request the device to get out of UAPSD power state. Upon
3488 the call of this API the WLAN DAL will send a HAL Exit
3489 UAPSD request message to the lower RIVA sub-system if
3490 DAL is in state STARTED.
3491
3492 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003494
3495 WDI_PostAssocReq must have been called.
3496
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 response of the Exit UAPSD operation received from the
3499 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003500
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 callback
3503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 @see WDI_PostAssocReq
3505 @return Result of the function call
3506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003508WDI_ExitUapsdReq
3509(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003510 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3512 void* pUserData
3513)
3514{
3515 WDI_EventInfoType wdiEventData;
3516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3517
3518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 ------------------------------------------------------------------------*/
3521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3522 {
3523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3524 "WDI API call before module is initialized - Fail request");
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 }
3528
3529 /*------------------------------------------------------------------------
3530 Fill in Event data and post to the Main FSM
3531 ------------------------------------------------------------------------*/
3532 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003533 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3534 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 wdiEventData.pUserData = pUserData;
3537
3538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3539
3540}/*WDI_ExitUapsdReq*/
3541
3542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 MAC wants to set the UAPSD related configurations
3545 of an associated STA (while acting as an AP) to the WLAN
3546 Device. Upon the call of this API the WLAN DAL will pack
3547 and send a HAL Update UAPSD params request message to
3548 the lower RIVA sub-system if DAL is in state STARTED.
3549
3550 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003552
3553 WDI_ConfigBSSReq must have been called.
3554
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003557
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 wdiUpdateUapsdParamsCb: callback for passing back the
3559 response of the update UAPSD params operation received
3560 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003561
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003563 callback
3564
Jeff Johnson295189b2012-06-20 16:38:30 -07003565 @see WDI_ConfigBSSReq
3566 @return Result of the function call
3567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003569WDI_UpdateUapsdParamsReq
3570(
3571 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3572 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3573 void* pUserData
3574)
3575{
3576 WDI_EventInfoType wdiEventData;
3577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3578
3579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 ------------------------------------------------------------------------*/
3582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3583 {
3584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3585 "WDI API call before module is initialized - Fail request");
3586
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 }
3589
3590 /*------------------------------------------------------------------------
3591 Fill in Event data and post to the Main FSM
3592 ------------------------------------------------------------------------*/
3593 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003595 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 wdiEventData.pUserData = pUserData;
3598
3599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3600
3601}/*WDI_UpdateUapsdParamsReq*/
3602
3603/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 MAC wants to set the UAPSD related configurations before
3606 requesting for enter UAPSD power state to the WLAN
3607 Device. Upon the call of this API the WLAN DAL will pack
3608 and send a HAL Set UAPSD params request message to
3609 the lower RIVA sub-system if DAL is in state STARTED.
3610
3611 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003613
3614 WDI_PostAssocReq must have been called.
3615
3616 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3617 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003618
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 wdiSetUapsdAcParamsCb: callback for passing back the
3620 response of the set UAPSD params operation received from
3621 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003622
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 callback
3625
Jeff Johnson295189b2012-06-20 16:38:30 -07003626 @see WDI_PostAssocReq
3627 @return Result of the function call
3628*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003629WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003630WDI_SetUapsdAcParamsReq
3631(
3632 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3633 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3634 void* pUserData
3635)
3636{
3637 WDI_EventInfoType wdiEventData;
3638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3639
3640 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 ------------------------------------------------------------------------*/
3643 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3644 {
3645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3646 "WDI API call before module is initialized - Fail request");
3647
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 }
3650
3651 /*------------------------------------------------------------------------
3652 Fill in Event data and post to the Main FSM
3653 ------------------------------------------------------------------------*/
3654 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 wdiEventData.pEventData = pwdiUapsdInfo;
3656 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3657 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 wdiEventData.pUserData = pUserData;
3659
3660 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3661
3662}/*WDI_SetUapsdAcParamsReq*/
3663
3664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 MAC wants to set/reset the RXP filters for received pkts
3667 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3668 and send a HAL configure RXP filter request message to
3669 the lower RIVA sub-system.
3670
3671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003673
Jeff Johnsone7245742012-09-05 17:12:55 -07003674
3675 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 filter as specified by the Device
3677 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003678
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 wdiConfigureRxpFilterCb: callback for passing back the
3680 response of the configure RXP filter operation received
3681 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003682
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 callback
3685
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 @return Result of the function call
3687*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003688WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003689WDI_ConfigureRxpFilterReq
3690(
3691 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3692 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3693 void* pUserData
3694)
3695{
3696 WDI_EventInfoType wdiEventData;
3697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3698
3699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 ------------------------------------------------------------------------*/
3702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3703 {
3704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3705 "WDI API call before module is initialized - Fail request");
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 }
3709
3710 /*------------------------------------------------------------------------
3711 Fill in Event data and post to the Main FSM
3712 ------------------------------------------------------------------------*/
3713 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3715 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3716 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiEventData.pUserData = pUserData;
3718
3719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3720}/*WDI_ConfigureRxpFilterReq*/
3721
3722/**
3723 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3724 wants to set the beacon filters while in power save.
3725 Upon the call of this API the WLAN DAL will pack and
3726 send a Beacon filter request message to the
3727 lower RIVA sub-system.
3728
3729 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003731
Jeff Johnsone7245742012-09-05 17:12:55 -07003732
3733 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 filter as specified by the Device
3735 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003736
Jeff Johnson295189b2012-06-20 16:38:30 -07003737 wdiBeaconFilterCb: callback for passing back the
3738 response of the set beacon filter operation received
3739 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003740
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 callback
3743
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 @return Result of the function call
3745*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003747WDI_SetBeaconFilterReq
3748(
3749 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3750 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3751 void* pUserData
3752)
3753{
3754 WDI_EventInfoType wdiEventData;
3755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3756
3757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 ------------------------------------------------------------------------*/
3760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3761 {
3762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3763 "WDI API call before module is initialized - Fail request");
3764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 }
3767
3768 /*------------------------------------------------------------------------
3769 Fill in Event data and post to the Main FSM
3770 ------------------------------------------------------------------------*/
3771 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003773 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 wdiEventData.pUserData = pUserData;
3776
3777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3778}/*WDI_SetBeaconFilterReq*/
3779
3780/**
3781 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3782 wants to remove the beacon filter for particular IE
3783 while in power save. Upon the call of this API the WLAN
3784 DAL will pack and send a remove Beacon filter request
3785 message to the lower RIVA sub-system.
3786
3787 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790
3791 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 filter as specified by the Device
3793 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003794
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 wdiBeaconFilterCb: callback for passing back the
3796 response of the remove beacon filter operation received
3797 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003798
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 callback
3801
Jeff Johnson295189b2012-06-20 16:38:30 -07003802 @return Result of the function call
3803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003805WDI_RemBeaconFilterReq
3806(
3807 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3808 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3809 void* pUserData
3810)
3811{
3812 WDI_EventInfoType wdiEventData;
3813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3814
3815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 ------------------------------------------------------------------------*/
3818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3819 {
3820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3821 "WDI API call before module is initialized - Fail request");
3822
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 }
3825
3826 /*------------------------------------------------------------------------
3827 Fill in Event data and post to the Main FSM
3828 ------------------------------------------------------------------------*/
3829 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003831 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 wdiEventData.pUserData = pUserData;
3834
3835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3836}/*WDI_RemBeaconFilterReq*/
3837
3838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 MAC wants to set the RSSI thresholds related
3841 configurations while in power save. Upon the call of
3842 this API the WLAN DAL will pack and send a HAL Set RSSI
3843 thresholds request message to the lower RIVA
3844 sub-system if DAL is in state STARTED.
3845
3846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003848
3849 WDI_PostAssocReq must have been called.
3850
3851 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3852 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003853
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 wdiSetUapsdAcParamsCb: callback for passing back the
3855 response of the set UAPSD params operation received from
3856 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003857
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 callback
3860
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 @see WDI_PostAssocReq
3862 @return Result of the function call
3863*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003864WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003865WDI_SetRSSIThresholdsReq
3866(
3867 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3868 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3869 void* pUserData
3870)
3871{
3872 WDI_EventInfoType wdiEventData;
3873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3874
3875 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 ------------------------------------------------------------------------*/
3878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3879 {
3880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3881 "WDI API call before module is initialized - Fail request");
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 }
3885
3886 /*------------------------------------------------------------------------
3887 Fill in Event data and post to the Main FSM
3888 ------------------------------------------------------------------------*/
3889 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003891 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003892 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 wdiEventData.pUserData = pUserData;
3894
3895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3896}/* WDI_SetRSSIThresholdsReq*/
3897
3898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 wants to set the filter to minimize unnecessary host
3901 wakeup due to broadcast traffic while in power save.
3902 Upon the call of this API the WLAN DAL will pack and
3903 send a HAL host offload request message to the
3904 lower RIVA sub-system if DAL is in state STARTED.
3905
3906 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003908
3909 WDI_PostAssocReq must have been called.
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003913
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 wdiHostOffloadCb: callback for passing back the response
3915 of the host offload operation received from the
3916 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003917
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 callback
3920
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 @see WDI_PostAssocReq
3922 @return Result of the function call
3923*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003924WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003925WDI_HostOffloadReq
3926(
3927 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3928 WDI_HostOffloadCb wdiHostOffloadCb,
3929 void* pUserData
3930)
3931{
3932 WDI_EventInfoType wdiEventData;
3933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3934
3935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 ------------------------------------------------------------------------*/
3938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3939 {
3940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3941 "WDI API call before module is initialized - Fail request");
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 }
3945
3946 /*------------------------------------------------------------------------
3947 Fill in Event data and post to the Main FSM
3948 ------------------------------------------------------------------------*/
3949 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003951 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 wdiEventData.pUserData = pUserData;
3954
3955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3956}/*WDI_HostOffloadReq*/
3957
3958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 @brief WDI_KeepAliveReq will be called when the upper MAC
3960 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 and minimize unnecessary host wakeups due to while in power save.
3962 Upon the call of this API the WLAN DAL will pack and
3963 send a HAL Keep Alive request message to the
3964 lower RIVA sub-system if DAL is in state STARTED.
3965
3966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003968
3969 WDI_PostAssocReq must have been called.
3970
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003973
Jeff Johnson295189b2012-06-20 16:38:30 -07003974 wdiKeepAliveCb: callback for passing back the response
3975 of the Keep Alive operation received from the
3976 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003977
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003979 callback
3980
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 @see WDI_PostAssocReq
3982 @return Result of the function call
3983*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003984WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003985WDI_KeepAliveReq
3986(
3987 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3988 WDI_KeepAliveCb wdiKeepAliveCb,
3989 void* pUserData
3990)
3991{
3992 WDI_EventInfoType wdiEventData;
3993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3994
3995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 ------------------------------------------------------------------------*/
3998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3999 {
4000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4001 "WDI_KeepAliveReq: WDI API call before module "
4002 "is initialized - Fail request");
4003
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 }
4006
4007 /*------------------------------------------------------------------------
4008 Fill in Event data and post to the Main FSM
4009 ------------------------------------------------------------------------*/
4010 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 wdiEventData.pEventData = pwdiKeepAliveParams;
4012 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4013 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 wdiEventData.pUserData = pUserData;
4015
4016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4017}/*WDI_KeepAliveReq*/
4018
4019/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 wants to set the Wowl Bcast ptrn to minimize unnecessary
4022 host wakeup due to broadcast traffic while in power
4023 save. Upon the call of this API the WLAN DAL will pack
4024 and send a HAL Wowl Bcast ptrn request message to the
4025 lower RIVA sub-system if DAL is in state STARTED.
4026
4027 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004029
4030 WDI_PostAssocReq must have been called.
4031
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004034
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 wdiWowlAddBcPtrnCb: callback for passing back the
4036 response of the add Wowl bcast ptrn operation received
4037 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004038
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 callback
4041
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 @see WDI_PostAssocReq
4043 @return Result of the function call
4044*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004045WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004046WDI_WowlAddBcPtrnReq
4047(
4048 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4049 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4050 void* pUserData
4051)
4052{
4053 WDI_EventInfoType wdiEventData;
4054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4055
4056 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004058 ------------------------------------------------------------------------*/
4059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4060 {
4061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4062 "WDI API call before module is initialized - Fail request");
4063
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 }
4066
4067 /*------------------------------------------------------------------------
4068 Fill in Event data and post to the Main FSM
4069 ------------------------------------------------------------------------*/
4070 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004072 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 wdiEventData.pUserData = pUserData;
4075
4076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4077}/*WDI_WowlAddBcPtrnReq*/
4078
4079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 wants to clear the Wowl Bcast ptrn. Upon the call of
4082 this API the WLAN DAL will pack and send a HAL delete
4083 Wowl Bcast ptrn request message to the lower RIVA
4084 sub-system if DAL is in state STARTED.
4085
4086 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004088
4089 WDI_WowlAddBcPtrnReq must have been called.
4090
Jeff Johnsone7245742012-09-05 17:12:55 -07004091 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004092 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004093
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 wdiWowlDelBcPtrnCb: callback for passing back the
4095 response of the del Wowl bcast ptrn operation received
4096 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004097
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 callback
4100
Jeff Johnson295189b2012-06-20 16:38:30 -07004101 @see WDI_WowlAddBcPtrnReq
4102 @return Result of the function call
4103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004105WDI_WowlDelBcPtrnReq
4106(
4107 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4108 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4109 void* pUserData
4110)
4111{
4112 WDI_EventInfoType wdiEventData;
4113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4114
4115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 ------------------------------------------------------------------------*/
4118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4119 {
4120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4121 "WDI API call before module is initialized - Fail request");
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 }
4125
4126 /*------------------------------------------------------------------------
4127 Fill in Event data and post to the Main FSM
4128 ------------------------------------------------------------------------*/
4129 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004131 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 wdiEventData.pUserData = pUserData;
4134
4135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4136}/*WDI_WowlDelBcPtrnReq*/
4137
4138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 wants to enter the Wowl state to minimize unnecessary
4141 host wakeup while in power save. Upon the call of this
4142 API the WLAN DAL will pack and send a HAL Wowl enter
4143 request message to the lower RIVA sub-system if DAL is
4144 in state STARTED.
4145
4146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004148
4149 WDI_PostAssocReq must have been called.
4150
Jeff Johnsone7245742012-09-05 17:12:55 -07004151 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004153
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 wdiWowlEnterReqCb: callback for passing back the
4155 response of the enter Wowl operation received from the
4156 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004157
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 callback
4160
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 @see WDI_PostAssocReq
4162 @return Result of the function call
4163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004165WDI_WowlEnterReq
4166(
4167 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4168 WDI_WowlEnterReqCb wdiWowlEnterCb,
4169 void* pUserData
4170)
4171{
4172 WDI_EventInfoType wdiEventData;
4173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4174
4175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 ------------------------------------------------------------------------*/
4178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4179 {
4180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4181 "WDI API call before module is initialized - Fail request");
4182
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 }
4185
4186 /*------------------------------------------------------------------------
4187 Fill in Event data and post to the Main FSM
4188 ------------------------------------------------------------------------*/
4189 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004191 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004192 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiEventData.pUserData = pUserData;
4194
4195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4196}/*WDI_WowlEnterReq*/
4197
4198/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 wants to exit the Wowl state. Upon the call of this API
4201 the WLAN DAL will pack and send a HAL Wowl exit request
4202 message to the lower RIVA sub-system if DAL is in state
4203 STARTED.
4204
4205 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004207
4208 WDI_WowlEnterReq must have been called.
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004212
Jeff Johnson295189b2012-06-20 16:38:30 -07004213 wdiWowlExitReqCb: callback for passing back the response
4214 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004215
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 callback
4218
Jeff Johnson295189b2012-06-20 16:38:30 -07004219 @see WDI_WowlEnterReq
4220 @return Result of the function call
4221*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004223WDI_WowlExitReq
4224(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004225 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 WDI_WowlExitReqCb wdiWowlExitCb,
4227 void* pUserData
4228)
4229{
4230 WDI_EventInfoType wdiEventData;
4231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4232
4233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 ------------------------------------------------------------------------*/
4236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4237 {
4238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4239 "WDI API call before module is initialized - Fail request");
4240
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 }
4243
4244 /*------------------------------------------------------------------------
4245 Fill in Event data and post to the Main FSM
4246 ------------------------------------------------------------------------*/
4247 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004248 wdiEventData.pEventData = pwdiWowlExitParams;
4249 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 wdiEventData.pUserData = pUserData;
4252
4253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4254}/*WDI_WowlExitReq*/
4255
4256/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 the upper MAC wants to dynamically adjusts the listen
4259 interval based on the WLAN/MSM activity. Upon the call
4260 of this API the WLAN DAL will pack and send a HAL
4261 configure Apps Cpu Wakeup State request message to the
4262 lower RIVA sub-system.
4263
4264 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267
4268 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 Apps Cpu Wakeup State as specified by the
4270 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004271
Jeff Johnson295189b2012-06-20 16:38:30 -07004272 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4273 back the response of the configure Apps Cpu Wakeup State
4274 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004275
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 callback
4278
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 @return Result of the function call
4280*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004281WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004282WDI_ConfigureAppsCpuWakeupStateReq
4283(
4284 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4285 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4286 void* pUserData
4287)
4288{
4289 WDI_EventInfoType wdiEventData;
4290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4291
4292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 ------------------------------------------------------------------------*/
4295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4296 {
4297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4298 "WDI API call before module is initialized - Fail request");
4299
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 }
4302
4303 /*------------------------------------------------------------------------
4304 Fill in Event data and post to the Main FSM
4305 ------------------------------------------------------------------------*/
4306 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4308 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4309 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 wdiEventData.pUserData = pUserData;
4311
4312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4313}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4314/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 to to perform a flush operation on a given AC. Upon the
4317 call of this API the WLAN DAL will pack and send a HAL
4318 Flush AC request message to the lower RIVA sub-system if
4319 DAL is in state STARTED.
4320
4321 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004323
4324 WDI_AddBAReq must have been called.
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004328
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 wdiFlushAcRspCb: callback for passing back the response
4330 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004331
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 callback
4334
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 @see WDI_AddBAReq
4336 @return Result of the function call
4337*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004339WDI_FlushAcReq
4340(
4341 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4342 WDI_FlushAcRspCb wdiFlushAcRspCb,
4343 void* pUserData
4344)
4345{
4346 WDI_EventInfoType wdiEventData;
4347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4348
4349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 ------------------------------------------------------------------------*/
4352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4353 {
4354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4355 "WDI API call before module is initialized - Fail request");
4356
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 }
4359
4360 /*------------------------------------------------------------------------
4361 Fill in Event data and post to the Main FSM
4362 ------------------------------------------------------------------------*/
4363 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 wdiEventData.pEventData = pwdiFlushAcReqParams;
4365 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4366 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 wdiEventData.pUserData = pUserData;
4368
4369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4370
4371}/*WDI_FlushAcReq*/
4372
4373/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 wants to notify the lower mac on a BT AMP event. This is
4376 to inform BTC-SLM that some BT AMP event occurred. Upon
4377 the call of this API the WLAN DAL will pack and send a
4378 HAL BT AMP event request message to the lower RIVA
4379 sub-system if DAL is in state STARTED.
4380
4381 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004383
Jeff Johnsone7245742012-09-05 17:12:55 -07004384
4385 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004387
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 wdiBtAmpEventRspCb: callback for passing back the
4389 response of the BT AMP event operation received from the
4390 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004391
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 callback
4394
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 @return Result of the function call
4396*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004398WDI_BtAmpEventReq
4399(
4400 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4401 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4402 void* pUserData
4403)
4404{
4405 WDI_EventInfoType wdiEventData;
4406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4407
4408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 ------------------------------------------------------------------------*/
4411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4412 {
4413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4414 "WDI API call before module is initialized - Fail request");
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 }
4418
4419 /*------------------------------------------------------------------------
4420 Fill in Event data and post to the Main FSM
4421 ------------------------------------------------------------------------*/
4422 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4424 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4425 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 wdiEventData.pUserData = pUserData;
4427
4428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4429
4430}/*WDI_BtAmpEventReq*/
4431
Jeff Johnsone7245742012-09-05 17:12:55 -07004432#ifdef FEATURE_OEM_DATA_SUPPORT
4433/**
4434 @brief WDI_Start Oem Data Req will be called when the upper MAC
4435 wants to notify the lower mac on a oem data Req event.Upon
4436 the call of this API the WLAN DAL will pack and send a
4437 HAL OEM Data Req event request message to the lower RIVA
4438 sub-system if DAL is in state STARTED.
4439
4440 In state BUSY this request will be queued. Request won't
4441 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004442
4443
Jeff Johnsone7245742012-09-05 17:12:55 -07004444
4445 @param pwdiOemDataReqParams: the Oem Data Req as
4446 specified by the Device Interface
4447
4448 wdiStartOemDataRspCb: callback for passing back the
4449 response of the Oem Data Req received from the
4450 device
4451
4452 pUserData: user data will be passed back with the
4453 callback
4454
4455 @return Result of the function call
4456*/
4457WDI_Status
4458WDI_StartOemDataReq
4459(
4460 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4461 WDI_oemDataRspCb wdiOemDataRspCb,
4462 void* pUserData
4463)
4464{
4465 WDI_EventInfoType wdiEventData;
4466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4467
4468 /*------------------------------------------------------------------------
4469 Sanity Check
4470 ------------------------------------------------------------------------*/
4471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4472 {
4473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4474 "WDI API call before module is initialized - Fail request");
4475
4476 return WDI_STATUS_E_NOT_ALLOWED;
4477 }
4478
4479 /*------------------------------------------------------------------------
4480 Fill in Event data and post to the Main FSM
4481 ------------------------------------------------------------------------*/
4482 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4483 wdiEventData.pEventData = pwdiOemDataReqParams;
4484 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4485 wdiEventData.pCBfnc = wdiOemDataRspCb;
4486 wdiEventData.pUserData = pUserData;
4487
4488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4489
4490
4491}
4492
4493#endif
4494
4495
4496/*========================================================================
4497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004499
Jeff Johnson295189b2012-06-20 16:38:30 -07004500==========================================================================*/
4501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 the WLAN HW to change the current channel of operation.
4504 Upon the call of this API the WLAN DAL will pack and
4505 send a HAL Start request message to the lower RIVA
4506 sub-system if DAL is in state STARTED.
4507
4508 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004510
4511 WDI_Start must have been called.
4512
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004514 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004515
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 wdiSwitchChRspCb: callback for passing back the response
4517 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 callback
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 @see WDI_Start
4523 @return Result of the function call
4524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004526WDI_SwitchChReq
4527(
4528 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4529 WDI_SwitchChRspCb wdiSwitchChRspCb,
4530 void* pUserData
4531)
4532{
4533 WDI_EventInfoType wdiEventData;
4534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4535
4536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 ------------------------------------------------------------------------*/
4539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4540 {
4541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4542 "WDI API call before module is initialized - Fail request");
4543
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004545 }
4546
4547 /*------------------------------------------------------------------------
4548 Fill in Event data and post to the Main FSM
4549 ------------------------------------------------------------------------*/
4550 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 wdiEventData.pEventData = pwdiSwitchChReqParams;
4552 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4553 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 wdiEventData.pUserData = pUserData;
4555
4556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4557
4558}/*WDI_SwitchChReq*/
4559
4560
4561/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 wishes to add or update a STA in HW. Upon the call of
4564 this API the WLAN DAL will pack and send a HAL Start
4565 message request message to the lower RIVA sub-system if
4566 DAL is in state STARTED.
4567
4568 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004570
4571 WDI_Start must have been called.
4572
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004575
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 wdiConfigSTARspCb: callback for passing back the
4577 response of the config STA operation received from the
4578 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004579
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 callback
4582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 @see WDI_Start
4584 @return Result of the function call
4585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004587WDI_ConfigSTAReq
4588(
4589 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4590 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4591 void* pUserData
4592)
4593{
4594 WDI_EventInfoType wdiEventData;
4595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4596
4597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004599 ------------------------------------------------------------------------*/
4600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4601 {
4602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4603 "WDI API call before module is initialized - Fail request");
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 }
4607
4608 /*------------------------------------------------------------------------
4609 Fill in Event data and post to the Main FSM
4610 ------------------------------------------------------------------------*/
4611 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4613 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4614 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 wdiEventData.pUserData = pUserData;
4616
4617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4618
4619}/*WDI_ConfigSTAReq*/
4620
4621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 wants to change the state of an ongoing link. Upon the
4624 call of this API the WLAN DAL will pack and send a HAL
4625 Start message request message to the lower RIVA
4626 sub-system if DAL is in state STARTED.
4627
4628 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004630
4631 WDI_JoinStartReq must have been called.
4632
Jeff Johnsone7245742012-09-05 17:12:55 -07004633 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004635
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 wdiSetLinkStateRspCb: callback for passing back the
4637 response of the set link state operation received from
4638 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004639
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 callback
4642
Jeff Johnson295189b2012-06-20 16:38:30 -07004643 @see WDI_JoinStartReq
4644 @return Result of the function call
4645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004647WDI_SetLinkStateReq
4648(
4649 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4650 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4651 void* pUserData
4652)
4653{
4654 WDI_EventInfoType wdiEventData;
4655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4656
4657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 ------------------------------------------------------------------------*/
4660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4661 {
4662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4663 "WDI API call before module is initialized - Fail request");
4664
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 }
4667
4668 /*------------------------------------------------------------------------
4669 Fill in Event data and post to the Main FSM
4670 ------------------------------------------------------------------------*/
4671 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4673 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4674 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 wdiEventData.pUserData = pUserData;
4676
4677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4678
4679}/*WDI_SetLinkStateReq*/
4680
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 to get statistics (MIB counters) from the device. Upon
4685 the call of this API the WLAN DAL will pack and send a
4686 HAL Start request message to the lower RIVA sub-system
4687 if DAL is in state STARTED.
4688
4689 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004691
4692 WDI_Start must have been called.
4693
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004695 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004696
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiGetStatsRspCb: callback for passing back the response
4698 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004699
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004701 callback
4702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 @see WDI_Start
4704 @return Result of the function call
4705*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004707WDI_GetStatsReq
4708(
4709 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4710 WDI_GetStatsRspCb wdiGetStatsRspCb,
4711 void* pUserData
4712)
4713{
4714 WDI_EventInfoType wdiEventData;
4715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4716
4717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 ------------------------------------------------------------------------*/
4720 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4721 {
4722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4723 "WDI API call before module is initialized - Fail request");
4724
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004726 }
4727
4728 /*------------------------------------------------------------------------
4729 Fill in Event data and post to the Main FSM
4730 ------------------------------------------------------------------------*/
4731 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004732 wdiEventData.pEventData = pwdiGetStatsReqParams;
4733 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4734 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 wdiEventData.pUserData = pUserData;
4736
4737 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4738
4739}/*WDI_GetStatsReq*/
4740
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004741#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4742/**
4743 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4744 to get roam rssi from the device. Upon
4745 the call of this API the WLAN DAL will pack and send a
4746 HAL Start request message to the lower RIVA sub-system
4747 if DAL is in state STARTED.
4748
4749 In state BUSY this request will be queued. Request won't
4750 be allowed in any other state.
4751
4752 WDI_Start must have been called.
4753
4754 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4755 specified by the Device Interface
4756
4757 wdiGetRoamRssiRspCb: callback for passing back the response
4758 of the get stats operation received from the device
4759
4760 pUserData: user data will be passed back with the
4761 callback
4762
4763 @see WDI_Start
4764 @return Result of the function call
4765*/
4766WDI_Status
4767WDI_GetRoamRssiReq
4768(
4769 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4770 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4771 void* pUserData
4772)
4773{
4774 WDI_EventInfoType wdiEventData;
4775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4776
4777 /*------------------------------------------------------------------------
4778 Sanity Check
4779 ------------------------------------------------------------------------*/
4780 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4781 {
4782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4783 "WDI API call before module is initialized - Fail request");
4784
4785 return WDI_STATUS_E_NOT_ALLOWED;
4786 }
4787 /*------------------------------------------------------------------------
4788 Fill in Event data and post to the Main FSM
4789 ------------------------------------------------------------------------*/
4790 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4791 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4792 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4793 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4794 wdiEventData.pUserData = pUserData;
4795
4796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4797
4798}/*WDI_GetRoamRssiReq*/
4799#endif
4800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801
4802/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004803 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 it wishes to change the configuration of the WLAN
4805 Device. Upon the call of this API the WLAN DAL will pack
4806 and send a HAL Update CFG request message to the lower
4807 RIVA sub-system if DAL is in state STARTED.
4808
4809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004811
4812 WDI_Start must have been called.
4813
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004816
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wdiUpdateCfgsRspCb: callback for passing back the
4818 response of the update cfg operation received from the
4819 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004822 callback
4823
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 @see WDI_Start
4825 @return Result of the function call
4826*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004827WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004828WDI_UpdateCfgReq
4829(
4830 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4831 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4832 void* pUserData
4833)
4834{
4835 WDI_EventInfoType wdiEventData;
4836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4837
4838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 ------------------------------------------------------------------------*/
4841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4842 {
4843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4844 "WDI API call before module is initialized - Fail request");
4845
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 }
4848
4849 /*------------------------------------------------------------------------
4850 Fill in Event data and post to the Main FSM
4851 ------------------------------------------------------------------------*/
4852 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4854 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4855 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiEventData.pUserData = pUserData;
4857
4858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4859
4860}/*WDI_UpdateCfgReq*/
4861
4862
4863
4864/**
4865 @brief WDI_AddBAReq will be called when the upper MAC has setup
4866 successfully a BA session and needs to notify the HW for
4867 the appropriate settings to take place. Upon the call of
4868 this API the WLAN DAL will pack and send a HAL Add BA
4869 request message to the lower RIVA sub-system if DAL is
4870 in state STARTED.
4871
4872 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004874
4875 WDI_PostAssocReq must have been called.
4876
4877 @param wdiAddBAReqParams: the add BA parameters as specified by
4878 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004879
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wdiAddBARspCb: callback for passing back the response of
4881 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004882
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 callback
4885
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 @see WDI_PostAssocReq
4887 @return Result of the function call
4888*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004889WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004890WDI_AddBAReq
4891(
4892 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4893 WDI_AddBARspCb wdiAddBARspCb,
4894 void* pUserData
4895)
4896{
4897 WDI_EventInfoType wdiEventData;
4898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4899
4900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 ------------------------------------------------------------------------*/
4903 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4904 {
4905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4906 "WDI API call before module is initialized - Fail request");
4907
Jeff Johnsone7245742012-09-05 17:12:55 -07004908 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004909 }
4910
4911 /*------------------------------------------------------------------------
4912 Fill in Event data and post to the Main FSM
4913 ------------------------------------------------------------------------*/
4914 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 wdiEventData.pEventData = pwdiAddBAReqParams;
4916 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4917 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 wdiEventData.pUserData = pUserData;
4919
4920 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4921
4922}/*WDI_AddBAReq*/
4923
4924
4925/**
4926 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4927 successfully a BA session and needs to notify the HW for
4928 the appropriate settings to take place. Upon the call of
4929 this API the WLAN DAL will pack and send a HAL Add BA
4930 request message to the lower RIVA sub-system if DAL is
4931 in state STARTED.
4932
4933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004935
4936 WDI_PostAssocReq must have been called.
4937
4938 @param wdiAddBAReqParams: the add BA parameters as specified by
4939 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 wdiAddBARspCb: callback for passing back the response of
4942 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004943
Jeff Johnson295189b2012-06-20 16:38:30 -07004944 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 callback
4946
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 @see WDI_PostAssocReq
4948 @return Result of the function call
4949*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004950WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004951WDI_TriggerBAReq
4952(
4953 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4954 WDI_TriggerBARspCb wdiTriggerBARspCb,
4955 void* pUserData
4956)
4957{
4958 WDI_EventInfoType wdiEventData;
4959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4960
4961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 ------------------------------------------------------------------------*/
4964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4965 {
4966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4967 "WDI API call before module is initialized - Fail request");
4968
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 }
4971
4972 /*------------------------------------------------------------------------
4973 Fill in Event data and post to the Main FSM
4974 ------------------------------------------------------------------------*/
4975 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4977 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4978 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 wdiEventData.pUserData = pUserData;
4980
4981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4982
4983}/*WDI_AddBAReq*/
4984
4985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 wishes to update any of the Beacon parameters used by HW.
4988 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4989 message to the lower RIVA sub-system if DAL is in state
4990 STARTED.
4991
4992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004994
4995 WDI_PostAssocReq must have been called.
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiUpdateBeaconParamsRspCb: callback for passing back the
5001 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 callback
5005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 @see WDI_PostAssocReq
5007 @return Result of the function call
5008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005010WDI_UpdateBeaconParamsReq
5011(
5012 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5013 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5014 void* pUserData
5015)
5016{
5017 WDI_EventInfoType wdiEventData;
5018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5019
5020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 ------------------------------------------------------------------------*/
5023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5024 {
5025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5026 "WDI API call before module is initialized - Fail request");
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 }
5030
5031 /*------------------------------------------------------------------------
5032 Fill in Event data and post to the Main FSM
5033 ------------------------------------------------------------------------*/
5034 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5036 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5037 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 wdiEventData.pUserData = pUserData;
5039
5040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5041
5042}/*WDI_UpdateBeaconParamsReq*/
5043
5044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 wishes to update the Beacon template used by HW.
5047 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5048 message to the lower RIVA sub-system if DAL is in state
5049 STARTED.
5050
5051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005053
5054 WDI_PostAssocReq must have been called.
5055
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005058
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiSendBeaconParamsRspCb: callback for passing back the
5060 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005061
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005063 callback
5064
Jeff Johnson295189b2012-06-20 16:38:30 -07005065 @see WDI_PostAssocReq
5066 @return Result of the function call
5067*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005069WDI_SendBeaconParamsReq
5070(
5071 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5072 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5073 void* pUserData
5074)
5075{
5076 WDI_EventInfoType wdiEventData;
5077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5078
5079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 ------------------------------------------------------------------------*/
5082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5083 {
5084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5085 "WDI API call before module is initialized - Fail request");
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 }
5089
5090 /*------------------------------------------------------------------------
5091 Fill in Event data and post to the Main FSM
5092 ------------------------------------------------------------------------*/
5093 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 wdiEventData.pEventData = pwdiSendBeaconParams;
5095 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5096 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiEventData.pUserData = pUserData;
5098
5099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5100
5101}/*WDI_SendBeaconParamsReq*/
5102
5103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 upper MAC wants to update the probe response template to
5106 be transmitted as Soft AP
5107 Upon the call of this API the WLAN DAL will
5108 pack and send the probe rsp template message to the
5109 lower RIVA sub-system if DAL is in state STARTED.
5110
5111 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005112 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005113
5114
Jeff Johnsone7245742012-09-05 17:12:55 -07005115 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005117
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 wdiSendBeaconParamsRspCb: callback for passing back the
5119 response of the Send Beacon Params operation received
5120 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005121
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 callback
5124
Jeff Johnson295189b2012-06-20 16:38:30 -07005125 @see WDI_AddBAReq
5126 @return Result of the function call
5127*/
5128
Jeff Johnsone7245742012-09-05 17:12:55 -07005129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005130WDI_UpdateProbeRspTemplateReq
5131(
5132 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5133 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5134 void* pUserData
5135)
5136{
5137 WDI_EventInfoType wdiEventData;
5138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5139
5140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 ------------------------------------------------------------------------*/
5143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5144 {
5145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5146 "WDI API call before module is initialized - Fail request");
5147
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 }
5150
5151 /*------------------------------------------------------------------------
5152 Fill in Event data and post to the Main FSM
5153 ------------------------------------------------------------------------*/
5154 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5156 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5157 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 wdiEventData.pUserData = pUserData;
5159
5160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5161
5162}/*WDI_UpdateProbeRspTemplateReq*/
5163
5164/**
5165 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5166 to the NV memory.
5167
5168
5169 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5170 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiNvDownloadRspCb: callback for passing back the response of
5173 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005174
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 callback
5177
Jeff Johnson295189b2012-06-20 16:38:30 -07005178 @see WDI_PostAssocReq
5179 @return Result of the function call
5180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005182WDI_NvDownloadReq
5183(
5184 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5185 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5186 void* pUserData
5187)
5188{
5189 WDI_EventInfoType wdiEventData;
5190
5191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005192 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 ------------------------------------------------------------------------*/
5194 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5195 {
5196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5197 "WDI API call before module is initialized - Fail request");
5198
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 }
5201
5202 /*------------------------------------------------------------------------
5203 Fill in Event data and post to the Main FSM
5204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5206 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5207 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5208 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 wdiEventData.pUserData = pUserData;
5210
5211 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5212
5213}/*WDI_NVDownloadReq*/
5214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 upper MAC wants to send Notice of Absence
5218 Upon the call of this API the WLAN DAL will
5219 pack and send the probe rsp template message to the
5220 lower RIVA sub-system if DAL is in state STARTED.
5221
5222 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005224
5225
Jeff Johnsone7245742012-09-05 17:12:55 -07005226 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005228
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 wdiSendBeaconParamsRspCb: callback for passing back the
5230 response of the Send Beacon Params operation received
5231 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005232
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 callback
5235
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 @see WDI_AddBAReq
5237 @return Result of the function call
5238*/
5239WDI_Status
5240WDI_SetP2PGONOAReq
5241(
5242 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5243 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5244 void* pUserData
5245)
5246{
5247 WDI_EventInfoType wdiEventData;
5248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5249
5250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 ------------------------------------------------------------------------*/
5253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5254 {
5255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5256 "WDI API call before module is initialized - Fail request");
5257
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 }
5260
5261 /*------------------------------------------------------------------------
5262 Fill in Event data and post to the Main FSM
5263 ------------------------------------------------------------------------*/
5264 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5266 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5267 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 wdiEventData.pUserData = pUserData;
5269
5270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5271
5272}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005273
5274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 UMAC wanted to add STA self while opening any new session
5277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005279
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 callback
5286
5287 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 @return Result of the function call
5289*/
5290WDI_Status
5291WDI_AddSTASelfReq
5292(
5293 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5294 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5295 void* pUserData
5296)
5297{
5298 WDI_EventInfoType wdiEventData;
5299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5300
5301 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 ------------------------------------------------------------------------*/
5304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5305 {
5306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5307 "WDI API call before module is initialized - Fail request");
5308
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 }
5311
5312 /*------------------------------------------------------------------------
5313 Fill in Event data and post to the Main FSM
5314 ------------------------------------------------------------------------*/
5315 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5317 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5318 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 wdiEventData.pUserData = pUserData;
5320
5321 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5322
5323}/*WDI_AddSTASelfReq*/
5324
5325
Jeff Johnsone7245742012-09-05 17:12:55 -07005326#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005327/**
5328 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5329 the device of a successful add TSpec negotiation. HW
5330 needs to receive the TSpec Info from the UMAC in order
5331 to configure properly the QoS data traffic. Upon the
5332 call of this API the WLAN DAL will pack and send a HAL
5333 Add TS request message to the lower RIVA sub-system if
5334 DAL is in state STARTED.
5335
5336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005338
5339 WDI_PostAssocReq must have been called.
5340
5341 @param wdiAddTsReqParams: the add TS parameters as specified by
5342 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005343
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 wdiAddTsRspCb: callback for passing back the response of
5345 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005346
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005348 callback
5349
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 @see WDI_PostAssocReq
5351 @return Result of the function call
5352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005354WDI_AggrAddTSReq
5355(
5356 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5357 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5358 void* pUserData
5359)
5360{
5361 WDI_EventInfoType wdiEventData;
5362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5363
5364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 ------------------------------------------------------------------------*/
5367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5368 {
5369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5370 "WDI API call before module is initialized - Fail request");
5371
Jeff Johnsone7245742012-09-05 17:12:55 -07005372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 }
5374
5375 /*------------------------------------------------------------------------
5376 Fill in Event data and post to the Main FSM
5377 ------------------------------------------------------------------------*/
5378 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5380 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5381 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 wdiEventData.pUserData = pUserData;
5383
5384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5385
5386}/*WDI_AggrAddTSReq*/
5387
5388#endif /* WLAN_FEATURE_VOWIFI_11R */
5389
Jeff Johnson295189b2012-06-20 16:38:30 -07005390/**
5391 @brief WDI_FTMCommandReq
5392 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005393
5394 @param ftmCommandReq: FTM Command Body
5395 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 @see
5399 @return Result of the function call
5400*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005401WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005402WDI_FTMCommandReq
5403(
5404 WDI_FTMCommandReqType *ftmCommandReq,
5405 WDI_FTMCommandRspCb ftmCommandRspCb,
5406 void *pUserData
5407)
5408{
5409 WDI_EventInfoType wdiEventData;
5410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5411
5412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005414 ------------------------------------------------------------------------*/
5415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5416 {
5417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5418 "WDI API call before module is initialized - Fail request");
5419
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 }
5422
5423 /*------------------------------------------------------------------------
5424 Fill in Event data and post to the Main FSM
5425 ------------------------------------------------------------------------*/
5426 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5427 wdiEventData.pEventData = (void *)ftmCommandReq;
5428 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5429 wdiEventData.pCBfnc = ftmCommandRspCb;
5430 wdiEventData.pUserData = pUserData;
5431
5432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5433}
Jeff Johnson295189b2012-06-20 16:38:30 -07005434/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005435 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005436
5437 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005439
5440
5441 @param pwdiResumeReqParams: as specified by
5442 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005443
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiResumeReqRspCb: callback for passing back the response of
5445 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005446
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 callback
5449
5450 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 @return Result of the function call
5452*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005453WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005454WDI_HostResumeReq
5455(
5456 WDI_ResumeParamsType* pwdiResumeReqParams,
5457 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5458 void* pUserData
5459)
5460{
5461 WDI_EventInfoType wdiEventData;
5462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5463
5464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005465 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 ------------------------------------------------------------------------*/
5467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5468 {
5469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5470 "WDI API call before module is initialized - Fail request");
5471
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 }
5474
5475 /*------------------------------------------------------------------------
5476 Fill in Event data and post to the Main FSM
5477 ------------------------------------------------------------------------*/
5478 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 wdiEventData.pEventData = pwdiResumeReqParams;
5480 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5481 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 wdiEventData.pUserData = pUserData;
5483
5484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5485
5486}/*WDI_HostResumeReq*/
5487
5488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005489 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005490
5491 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005492 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005493
5494
5495 @param pwdiDelStaSelfReqParams: as specified by
5496 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005497
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 wdiDelStaSelfRspCb: callback for passing back the response of
5499 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005500
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005502 callback
5503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 @see WDI_PostAssocReq
5505 @return Result of the function call
5506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005508WDI_DelSTASelfReq
5509(
5510 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5511 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5512 void* pUserData
5513)
5514{
5515 WDI_EventInfoType wdiEventData;
5516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5517
5518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005520 ------------------------------------------------------------------------*/
5521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5522 {
5523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5524 "WDI API call before module is initialized - Fail request");
5525
Jeff Johnsone7245742012-09-05 17:12:55 -07005526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 }
5528
5529 /*------------------------------------------------------------------------
5530 Fill in Event data and post to the Main FSM
5531 ------------------------------------------------------------------------*/
5532 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005533 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5534 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5535 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 wdiEventData.pUserData = pUserData;
5537
5538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5539
5540}/*WDI_AggrAddTSReq*/
5541
5542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5544 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 Upon the call of this API the WLAN DAL will pack
5546 and send a HAL Set Tx Per Tracking request message to the
5547 lower RIVA sub-system if DAL is in state STARTED.
5548
5549 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005551
Jeff Johnsone7245742012-09-05 17:12:55 -07005552 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005553 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005554
Jeff Johnson295189b2012-06-20 16:38:30 -07005555 pwdiSetTxPerTrackingRspCb: callback for passing back the
5556 response of the set Tx PER Tracking configurations operation received
5557 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005558
Jeff Johnson295189b2012-06-20 16:38:30 -07005559 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 callback
5561
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 @return Result of the function call
5563*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005565WDI_SetTxPerTrackingReq
5566(
5567 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5568 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5569 void* pUserData
5570)
5571{
5572 WDI_EventInfoType wdiEventData;
5573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5574
5575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 ------------------------------------------------------------------------*/
5578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5579 {
5580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5581 "WDI API call before module is initialized - Fail request");
5582
Jeff Johnsone7245742012-09-05 17:12:55 -07005583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 }
5585
5586 /*------------------------------------------------------------------------
5587 Fill in Event data and post to the Main FSM
5588 ------------------------------------------------------------------------*/
5589 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005590 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 wdiEventData.pUserData = pUserData;
5594
5595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5596
5597}/*WDI_SetTxPerTrackingReq*/
5598
5599/**
5600 @brief WDI_SetTmLevelReq
5601 If HW Thermal condition changed, driver should react based on new
5602 HW thermal condition.
5603
5604 @param pwdiSetTmLevelReq: New thermal condition information
5605
5606 pwdiSetTmLevelRspCb: callback
5607
5608 usrData: user data will be passed back with the
5609 callback
5610
5611 @return Result of the function call
5612*/
5613WDI_Status
5614WDI_SetTmLevelReq
5615(
5616 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5617 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5618 void *usrData
5619)
5620{
5621 WDI_EventInfoType wdiEventData;
5622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5623
5624 /*------------------------------------------------------------------------
5625 Sanity Check
5626 ------------------------------------------------------------------------*/
5627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5628 {
5629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5630 "WDI API call before module is initialized - Fail request");
5631
5632 return WDI_STATUS_E_NOT_ALLOWED;
5633 }
5634
5635 /*------------------------------------------------------------------------
5636 Fill in Event data and post to the Main FSM
5637 ------------------------------------------------------------------------*/
5638 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5639 wdiEventData.pEventData = pwdiSetTmLevelReq;
5640 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5641 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5642 wdiEventData.pUserData = usrData;
5643
5644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5645}
5646
5647/**
5648 @brief WDI_HostSuspendInd
5649
5650 Suspend Indication from the upper layer will be sent
5651 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
5655 @see
5656
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 @return Status of the request
5658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005660WDI_HostSuspendInd
5661(
5662 WDI_SuspendParamsType* pwdiSuspendIndParams
5663)
5664{
5665
5666 WDI_EventInfoType wdiEventData;
5667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5668
5669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 ------------------------------------------------------------------------*/
5672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5673 {
5674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5675 "WDI API call before module is initialized - Fail request");
5676
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 }
5679
5680 /*------------------------------------------------------------------------
5681 Fill in Event data and post to the Main FSM
5682 ------------------------------------------------------------------------*/
5683 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 wdiEventData.pEventData = pwdiSuspendIndParams;
5685 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5686 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005687 wdiEventData.pUserData = NULL;
5688
5689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5690
5691}/*WDI_HostSuspendInd*/
5692
5693/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005694 @brief WDI_TrafficStatsInd
5695 Traffic Stats from the upper layer will be sent
5696 down to HAL
5697
5698 @param WDI_TrafficStatsIndType
5699
5700 @see
5701
5702 @return Status of the request
5703*/
5704WDI_Status
5705WDI_TrafficStatsInd
5706(
5707 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5708)
5709{
5710
5711 WDI_EventInfoType wdiEventData;
5712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5713
5714 /*------------------------------------------------------------------------
5715 Sanity Check
5716 ------------------------------------------------------------------------*/
5717 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5718 {
5719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5720 "WDI API call before module is initialized - Fail request");
5721
5722 return WDI_STATUS_E_NOT_ALLOWED;
5723 }
5724
5725 /*------------------------------------------------------------------------
5726 Fill in Event data and post to the Main FSM
5727 ------------------------------------------------------------------------*/
5728 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5729 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5730 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5731 wdiEventData.pCBfnc = NULL;
5732 wdiEventData.pUserData = NULL;
5733
5734 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5735
5736}/*WDI_TrafficStatsInd*/
5737
Chet Lanctota96bb432013-03-18 10:26:30 -07005738#ifdef WLAN_FEATURE_11W
5739/**
5740 @brief WDI_ExcludeUnencryptedInd
5741 Register with HAL to receive/drop unencrypted frames
5742
5743 @param WDI_ExcludeUnencryptIndType
5744
5745 @see
5746
5747 @return Status of the request
5748*/
5749WDI_Status
5750WDI_ExcludeUnencryptedInd
5751(
5752 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5753)
5754{
5755
5756 WDI_EventInfoType wdiEventData;
5757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5758
5759 /*------------------------------------------------------------------------
5760 Sanity Check
5761 ------------------------------------------------------------------------*/
5762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5763 {
5764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5765 "WDI API call before module is initialized - Fail request");
5766
5767 return WDI_STATUS_E_NOT_ALLOWED;
5768 }
5769
5770 /*------------------------------------------------------------------------
5771 Fill in Event data and post to the Main FSM
5772 ------------------------------------------------------------------------*/
5773 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5774 wdiEventData.pEventData = pWdiExcUnencParams;
5775 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5776 wdiEventData.pCBfnc = NULL;
5777 wdiEventData.pUserData = NULL;
5778
5779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5780
5781}/*WDI_TrafficStatsInd*/
5782#endif
5783
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005784/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @brief WDI_HALDumpCmdReq
5786 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
5788 @param halDumpCmdReqParams: Hal Dump Command Body
5789 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005791
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 @see
5793 @return Result of the function call
5794*/
5795WDI_Status WDI_HALDumpCmdReq
5796(
5797 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5798 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5799 void *pUserData
5800)
5801{
5802 WDI_EventInfoType wdiEventData;
5803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5804
5805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 ------------------------------------------------------------------------*/
5808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5809 {
5810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5811 "WDI API call before module is initialized - Fail request");
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 }
5815
5816 /*------------------------------------------------------------------------
5817 Fill in Event data and post to the Main FSM
5818 ------------------------------------------------------------------------*/
5819 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5820 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5821 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5822 wdiEventData.pCBfnc = halDumpCmdRspCb;
5823 wdiEventData.pUserData = pUserData;
5824
5825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5826}
5827
Jeff Johnsone7245742012-09-05 17:12:55 -07005828/*============================================================================
5829
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005831
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 ============================================================================*/
5833
5834/**
5835 @brief Main FSM Start function for all states except BUSY
5836
Jeff Johnsone7245742012-09-05 17:12:55 -07005837
5838 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 wdiEV: event posted to the main DAL FSM
5840 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005841 structure
5842
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 @see
5844 @return Result of the function call
5845*/
5846WDI_Status
5847WDI_PostMainEvent
5848(
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 WDI_ControlBlockType* pWDICtx,
5850 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005852
Jeff Johnson295189b2012-06-20 16:38:30 -07005853)
5854{
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 WDI_Status wdiStatus;
5856 WDI_MainFuncType pfnWDIMainEvHdlr;
5857 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5859
5860 /*-------------------------------------------------------------------------
5861 Sanity check
5862 -------------------------------------------------------------------------*/
5863 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5864 ( wdiEV >= WDI_MAX_EVENT ))
5865 {
5866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5867 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5868 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 }
5871
5872 /*Access to the global state must be locked */
5873 wpalMutexAcquire(&pWDICtx->wptMutex);
5874
5875 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005877
5878 wdiOldState = pWDICtx->uGlobalState;
5879
5880 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5882 response comes from CCPU for the request sent by host:
5883 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 -07005884 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 -07005885 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 CCPU:
5887 don't change the state */
5888 if ( WDI_RESPONSE_EVENT != wdiEV)
5889 {
5890 /*Transition to BUSY State - the request is now being processed by the FSM,
5891 if the request fails we shall transition back to the old state, if not
5892 the request will manage its own state transition*/
5893 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5894 }
5895 /* If the state function associated with the EV is NULL it means that this
5896 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 {
5899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 }
5904 else
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 }
5911
5912 /* If a request handles itself well it will end up in a success or in a
5913 pending
5914 Success - means that the request was processed and the proper state
5915 transition already occurred or will occur when the resp is received
5916 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005917
Jeff Johnson295189b2012-06-20 16:38:30 -07005918 Pending - means the request could not be processed at this moment in time
5919 because the FSM was already busy so no state transition or dequeueing
5920 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005921
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 Success for synchronous case means that the transition may occur and
5923 processing of pending requests may continue - so it should go through
5924 and restores the state and continue processing queued requests*/
5925 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5926 ( WDI_STATUS_PENDING != wdiStatus ))
5927 {
5928 if ( WDI_RESPONSE_EVENT != wdiEV)
5929 {
5930 /*The request has failed or could not be processed - transition back to
5931 the old state - check to see if anything was queued and try to execute
5932 The dequeue logic should post a message to a thread and return - no
5933 actual processing can occur */
5934 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5935 }
5936 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005937
Jeff Johnson295189b2012-06-20 16:38:30 -07005938 }
5939
5940 /* we have completed processing the event */
5941 wpalMutexRelease(&pWDICtx->wptMutex);
5942
Jeff Johnsone7245742012-09-05 17:12:55 -07005943 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005944
5945}/*WDI_PostMainEvent*/
5946
5947
5948/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005949 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005950--------------------------------------------------------------------------*/
5951/**
5952 @brief Main FSM Start function for all states except BUSY
5953
Jeff Johnsone7245742012-09-05 17:12:55 -07005954
5955 @param pWDICtx: pointer to the WLAN DAL context
5956 pEventData: pointer to the event information structure
5957
Jeff Johnson295189b2012-06-20 16:38:30 -07005958 @see
5959 @return Result of the function call
5960*/
5961WDI_Status
5962WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005963(
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 WDI_ControlBlockType* pWDICtx,
5965 WDI_EventInfoType* pEventData
5966)
5967{
5968
5969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 ----------------------------------------------------------------------*/
5972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5973 {
5974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 pWDICtx, pEventData);
5977 return WDI_STATUS_E_FAILURE;
5978 }
5979
5980 wpalMutexAcquire(&pWDICtx->wptMutex);
5981
5982 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005983 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 ----------------------------------------------------------------------*/
5985 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5986 {
5987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5988 "Control Transport not yet Open - queueing the request");
5989
5990 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005992
5993 wpalMutexRelease(&pWDICtx->wptMutex);
5994 return WDI_STATUS_PENDING;
5995 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 wpalMutexRelease(&pWDICtx->wptMutex);
5998
5999 /*Return Success*/
6000 return WDI_ProcessRequest( pWDICtx, pEventData );
6001
6002}/*WDI_MainStart*/
6003
6004/**
6005 @brief Main FSM Response function for state INIT
6006
Jeff Johnsone7245742012-09-05 17:12:55 -07006007
6008 @param pWDICtx: pointer to the WLAN DAL context
6009 pEventData: pointer to the event information structure
6010
Jeff Johnson295189b2012-06-20 16:38:30 -07006011 @see
6012 @return Result of the function call
6013*/
6014WDI_Status
6015WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006016(
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 WDI_ControlBlockType* pWDICtx,
6018 WDI_EventInfoType* pEventData
6019)
6020{
6021 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006022 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006025
6026 /*Return Success*/
6027 return WDI_STATUS_E_NOT_ALLOWED;
6028}/* WDI_MainRspInit */
6029
6030/**
6031 @brief Main FSM Close function for all states except BUSY
6032
Jeff Johnsone7245742012-09-05 17:12:55 -07006033
6034 @param pWDICtx: pointer to the WLAN DAL context
6035 pEventData: pointer to the event information structure
6036
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 @see
6038 @return Result of the function call
6039*/
6040WDI_Status
6041WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006042(
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 WDI_ControlBlockType* pWDICtx,
6044 WDI_EventInfoType* pEventData
6045)
6046{
6047
6048 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 ----------------------------------------------------------------------*/
6051 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6052 {
6053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 pWDICtx, pEventData);
6056 return WDI_STATUS_E_FAILURE;
6057 }
6058
6059 /*Return Success*/
6060 return WDI_ProcessRequest( pWDICtx, pEventData );
6061
6062}/*WDI_MainClose*/
6063/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006065--------------------------------------------------------------------------*/
6066/**
6067 @brief Main FSM Start function for state STARTED
6068
Jeff Johnsone7245742012-09-05 17:12:55 -07006069
6070 @param pWDICtx: pointer to the WLAN DAL context
6071 pEventData: pointer to the event information structure
6072
Jeff Johnson295189b2012-06-20 16:38:30 -07006073 @see
6074 @return Result of the function call
6075*/
6076WDI_Status
6077WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006078(
Jeff Johnson295189b2012-06-20 16:38:30 -07006079 WDI_ControlBlockType* pWDICtx,
6080 WDI_EventInfoType* pEventData
6081)
6082{
6083 WDI_StartRspCb wdiStartRspCb = NULL;
6084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6085
6086 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006088 ----------------------------------------------------------------------*/
6089 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6090 {
6091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 pWDICtx, pEventData);
6094 return WDI_STATUS_E_FAILURE;
6095 }
6096
6097 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006098 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 ----------------------------------------------------------------------*/
6100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006102
6103 wpalMutexAcquire(&pWDICtx->wptMutex);
6104
6105 /*Transition back to started because the post function transitioned us to
6106 busy*/
6107 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6108
6109 /*Check to see if any request is pending*/
6110 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006111
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 wpalMutexRelease(&pWDICtx->wptMutex);
6113
6114 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6116
Jeff Johnson295189b2012-06-20 16:38:30 -07006117 /*Notify UMAC*/
6118 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6119
6120 /*Return Success*/
6121 return WDI_STATUS_SUCCESS;
6122
6123}/*WDI_MainStartStarted*/
6124
6125/**
6126 @brief Main FSM Stop function for state STARTED
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128
6129 @param pWDICtx: pointer to the WLAN DAL context
6130 pEventData: pointer to the event information structure
6131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 @see
6133 @return Result of the function call
6134*/
6135WDI_Status
6136WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006137(
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 WDI_ControlBlockType* pWDICtx,
6139 WDI_EventInfoType* pEventData
6140)
6141{
6142 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 ----------------------------------------------------------------------*/
6145 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6146 {
6147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 pWDICtx, pEventData);
6150 return WDI_STATUS_E_FAILURE;
6151 }
6152
6153 /*State at this point is BUSY - because we enter this state before posting
6154 an event to the FSM in order to prevent potential race conditions*/
6155
6156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6157 "Processing stop request in FSM");
6158
6159 /*Return Success*/
6160 return WDI_ProcessRequest( pWDICtx, pEventData );
6161
6162}/*WDI_MainStopStarted*/
6163/**
6164 @brief Main FSM Request function for state started
6165
Jeff Johnsone7245742012-09-05 17:12:55 -07006166
6167 @param pWDICtx: pointer to the WLAN DAL context
6168 pEventData: pointer to the event information structure
6169
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 @see
6171 @return Result of the function call
6172*/
6173WDI_Status
6174WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006175(
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 WDI_ControlBlockType* pWDICtx,
6177 WDI_EventInfoType* pEventData
6178)
6179{
6180
6181 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ----------------------------------------------------------------------*/
6184 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6185 {
6186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006187 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 pWDICtx, pEventData);
6189 return WDI_STATUS_E_FAILURE;
6190 }
6191
6192 /*State at this point is BUSY - because we enter this state before posting
6193 an event to the FSM in order to prevent potential race conditions*/
6194
6195 /*Return Success*/
6196 return WDI_ProcessRequest( pWDICtx, pEventData );
6197
6198}/*WDI_MainReqStarted*/
6199
6200/**
6201 @brief Main FSM Response function for all states except INIT
6202
Jeff Johnsone7245742012-09-05 17:12:55 -07006203
6204 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006206
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 @see
6208 @return Result of the function call
6209*/
6210WDI_Status
6211WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006212(
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 WDI_ControlBlockType* pWDICtx,
6214 WDI_EventInfoType* pEventData
6215)
6216{
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 wpt_boolean expectedResponse;
6219
6220 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 ----------------------------------------------------------------------*/
6223 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6224 {
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 pWDICtx, pEventData);
6228 return WDI_STATUS_E_FAILURE;
6229 }
6230
6231 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6232 {
6233 /* we received an expected response */
6234 expectedResponse = eWLAN_PAL_TRUE;
6235
6236 /*We expect that we will transition to started after this processing*/
6237 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6238
6239 /* we are no longer expecting a response */
6240 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6241 }
6242 else
6243 {
6244 /* we received an indication or unexpected response */
6245 expectedResponse = eWLAN_PAL_FALSE;
6246 /* for indications no need to update state from what it is right
6247 now, unless it explicitly does it in the indication handler (say
6248 for device failure ind) */
6249 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6250 }
6251
6252 /*Process the response and indication */
6253 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6254
6255 /*Lock the CB as we are about to do a state transition*/
6256 wpalMutexAcquire(&pWDICtx->wptMutex);
6257
6258 /*Transition to the expected state after the response processing
6259 - this should always be started state with the following exceptions:
6260 1. processing of a failed start response
6261 2. device failure detected while processing response
6262 3. stop response received*/
6263 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 /*Dequeue request that may have been queued while we were waiting for the
6266 response */
6267 if ( expectedResponse )
6268 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 }
6271
6272 wpalMutexRelease(&pWDICtx->wptMutex);
6273
6274 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276
6277}/*WDI_MainRsp*/
6278
6279/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006281--------------------------------------------------------------------------*/
6282/**
6283 @brief Main FSM Stop function for state STOPPED
6284
Jeff Johnsone7245742012-09-05 17:12:55 -07006285
6286 @param pWDICtx: pointer to the WLAN DAL context
6287 pEventData: pointer to the event information structure
6288
Jeff Johnson295189b2012-06-20 16:38:30 -07006289 @see
6290 @return Result of the function call
6291*/
6292WDI_Status
6293WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006294(
Jeff Johnson295189b2012-06-20 16:38:30 -07006295 WDI_ControlBlockType* pWDICtx,
6296 WDI_EventInfoType* pEventData
6297)
6298{
6299 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 ----------------------------------------------------------------------*/
6302 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6303 {
6304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 pWDICtx, pEventData);
6307 return WDI_STATUS_E_FAILURE;
6308 }
6309
6310 /*We should normally not get a STOP request if we are already stopped
6311 since we should normally be stopped by the UMAC. However in some
6312 error situations we put ourselves in the stopped state without the
6313 UMAC knowing, so when we get a STOP request in this state we still
6314 process it since we need to clean up the underlying state */
6315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6316 "Processing stop request while stopped in FSM");
6317
6318 /*Return Success*/
6319 return WDI_ProcessRequest( pWDICtx, pEventData );
6320
6321}/*WDI_MainStopStopped*/
6322
6323/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006324 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006325--------------------------------------------------------------------------*/
6326/**
6327 @brief Main FSM Start function for state BUSY
6328
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
6330 @param pWDICtx: pointer to the WLAN DAL context
6331 pEventData: pointer to the event information structure
6332
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 @see
6334 @return Result of the function call
6335*/
6336WDI_Status
6337WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006338(
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 WDI_ControlBlockType* pWDICtx,
6340 WDI_EventInfoType* pEventData
6341)
6342{
6343 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 ----------------------------------------------------------------------*/
6346 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6347 {
6348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006349 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 pWDICtx, pEventData);
6351 return WDI_STATUS_E_FAILURE;
6352 }
6353
6354 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 ----------------------------------------------------------------------*/
6357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6358 "WDI Busy state - queue start request");
6359
6360 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006362
6363 /*Return Success*/
6364 return WDI_STATUS_PENDING;
6365}/*WDI_MainStartBusy*/
6366
6367/**
6368 @brief Main FSM Stop function for state BUSY
6369
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
6371 @param pWDICtx: pointer to the WLAN DAL context
6372 pEventData: pointer to the event information structure
6373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 @see
6375 @return Result of the function call
6376*/
6377WDI_Status
6378WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006379(
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 WDI_ControlBlockType* pWDICtx,
6381 WDI_EventInfoType* pEventData
6382)
6383{
6384 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 ----------------------------------------------------------------------*/
6387 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6388 {
6389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 pWDICtx, pEventData);
6392 return WDI_STATUS_E_FAILURE;
6393 }
6394
6395 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 ----------------------------------------------------------------------*/
6398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6399 "WDI Busy state - queue stop request");
6400
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404}/*WDI_MainStopBusy*/
6405
6406/**
6407 @brief Main FSM Request function for state BUSY
6408
Jeff Johnsone7245742012-09-05 17:12:55 -07006409
6410 @param pWDICtx: pointer to the WLAN DAL context
6411 pEventData: pointer to the event information structure
6412
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 @see
6414 @return Result of the function call
6415*/
6416WDI_Status
6417WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006418(
Jeff Johnson295189b2012-06-20 16:38:30 -07006419 WDI_ControlBlockType* pWDICtx,
6420 WDI_EventInfoType* pEventData
6421)
6422{
6423 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006424 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 ----------------------------------------------------------------------*/
6426 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6427 {
6428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006430 pWDICtx, pEventData);
6431 return WDI_STATUS_E_FAILURE;
6432 }
6433
6434 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006435 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 ----------------------------------------------------------------------*/
6437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6438 "WDI Busy state - queue request %d because waiting for response %d",
6439 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6440
Jeff Johnsone7245742012-09-05 17:12:55 -07006441 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006443
Jeff Johnson295189b2012-06-20 16:38:30 -07006444}/*WDI_MainReqBusy*/
6445/**
6446 @brief Main FSM Close function for state BUSY
6447
Jeff Johnsone7245742012-09-05 17:12:55 -07006448
6449 @param pWDICtx: pointer to the WLAN DAL context
6450 pEventData: pointer to the event information structure
6451
Jeff Johnson295189b2012-06-20 16:38:30 -07006452 @see
6453 @return Result of the function call
6454*/
6455WDI_Status
6456WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006457(
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 WDI_ControlBlockType* pWDICtx,
6459 WDI_EventInfoType* pEventData
6460)
6461{
6462 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 ----------------------------------------------------------------------*/
6465 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6466 {
6467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 pWDICtx, pEventData);
6470 return WDI_STATUS_E_FAILURE;
6471 }
6472
6473 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 ----------------------------------------------------------------------*/
6476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6477 "WDI Busy state - queue close request");
6478
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006481
Jeff Johnson295189b2012-06-20 16:38:30 -07006482}/*WDI_MainCloseBusy*/
6483
6484/**
6485 @brief Main FSM Shutdown function for INIT & STARTED states
6486
6487
6488 @param pWDICtx: pointer to the WLAN DAL context
6489 pEventData: pointer to the event information structure
6490
6491 @see
6492 @return Result of the function call
6493*/
6494WDI_Status
6495WDI_MainShutdown
6496(
6497 WDI_ControlBlockType* pWDICtx,
6498 WDI_EventInfoType* pEventData
6499)
6500{
6501 /*--------------------------------------------------------------------
6502 Sanity Check
6503 ----------------------------------------------------------------------*/
6504 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6505 {
6506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6507 "Invalid parameters on Main Start %x %x",
6508 pWDICtx, pEventData);
6509 return WDI_STATUS_E_FAILURE;
6510 }
6511
6512 /*State at this point is BUSY - because we enter this state before posting
6513 an event to the FSM in order to prevent potential race conditions*/
6514
6515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6516 "Processing shutdown request in FSM");
6517
6518 /*Return Success*/
6519 return WDI_ProcessRequest( pWDICtx, pEventData );
6520
6521}/*WDI_MainShutdown*/
6522
6523/**
6524 @brief Main FSM Shutdown function for BUSY state
6525
6526
6527 @param pWDICtx: pointer to the WLAN DAL context
6528 pEventData: pointer to the event information structure
6529
6530 @see
6531 @return Result of the function call
6532*/
6533WDI_Status
6534WDI_MainShutdownBusy
6535(
6536 WDI_ControlBlockType* pWDICtx,
6537 WDI_EventInfoType* pEventData
6538)
6539{
6540 /*--------------------------------------------------------------------
6541 Sanity Check
6542 ----------------------------------------------------------------------*/
6543 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6544 {
6545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6546 "Invalid parameters on Main Start %x %x",
6547 pWDICtx, pEventData);
6548 return WDI_STATUS_E_FAILURE;
6549 }
6550
6551 /* If you are waiting for a HAL response at this stage, you are not
6552 * going to get it. Riva is already shutdown/crashed.
6553 */
6554 wpalTimerStop(&gWDICb.wptResponseTimer);
6555
6556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6557 "Processing shutdown request in FSM: Busy state ");
6558
6559 return WDI_ProcessRequest( pWDICtx, pEventData );
6560
6561}/*WDI_MainShutdownBusy*/
6562
6563
Jeff Johnsone7245742012-09-05 17:12:55 -07006564/*=======================================================================
6565
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006567
Jeff Johnson295189b2012-06-20 16:38:30 -07006568*=======================================================================*/
6569
6570/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006571 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006572========================================================================*/
6573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006576
6577 @param pWDICtx: pointer to the WLAN DAL context
6578 pEventData: pointer to the event information structure
6579
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 @see
6581 @return Result of the function call
6582*/
6583WDI_Status
6584WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006585(
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 WDI_ControlBlockType* pWDICtx,
6587 WDI_EventInfoType* pEventData
6588)
6589{
6590 WDI_StartReqParamsType* pwdiStartParams = NULL;
6591 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 wpt_uint16 usDataOffset = 0;
6594 wpt_uint16 usSendSize = 0;
6595
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 tHalMacStartReqMsg halStartReq;
6597 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6599
6600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 -------------------------------------------------------------------------*/
6603 if (( NULL == pEventData ) ||
6604 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6605 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6606 {
6607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 }
6612
6613 /*-----------------------------------------------------------------------
6614 Get message buffer
6615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 pwdiStartParams->usConfigBufferLen;
6618
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 usLen,
6621 &pSendBuffer, &usDataOffset, &usSendSize))||
6622 ( usSendSize < (usDataOffset + usLen )))
6623 {
6624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6625 "Unable to get send buffer in start req %x %x %x",
6626 pEventData, pwdiStartParams, wdiStartRspCb);
6627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006629 }
6630
6631 /*-----------------------------------------------------------------------
6632 Fill in the message
6633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 halStartReq.startReqParams.driverType =
6635 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 halStartReq.startReqParams.uConfigBufferLen =
6638 pwdiStartParams->usConfigBufferLen;
6639 wpalMemoryCopy( pSendBuffer+usDataOffset,
6640 &halStartReq.startReqParams,
6641 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 usDataOffset += sizeof(halStartReq.startReqParams);
6644 wpalMemoryCopy( pSendBuffer+usDataOffset,
6645 pwdiStartParams->pConfigBuffer,
6646 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006647
6648 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006650
6651 /*Save Low Level Ind CB and associated user data - it will be used further
6652 on when an indication is coming from the lower MAC*/
6653 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006655
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006658 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6662
Jeff Johnsone7245742012-09-05 17:12:55 -07006663
Jeff Johnson295189b2012-06-20 16:38:30 -07006664}/*WDI_ProcessStartReq*/
6665
6666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006667 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006669
6670 @param pWDICtx: pointer to the WLAN DAL context
6671 pEventData: pointer to the event information structure
6672
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 @see
6674 @return Result of the function call
6675*/
6676WDI_Status
6677WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006678(
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 WDI_ControlBlockType* pWDICtx,
6680 WDI_EventInfoType* pEventData
6681)
6682{
6683 WDI_StopReqParamsType* pwdiStopParams = NULL;
6684 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 wpt_uint16 usDataOffset = 0;
6687 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006688 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6691
6692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 -------------------------------------------------------------------------*/
6695 if (( NULL == pEventData ) ||
6696 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6697 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6698 {
6699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006702 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 }
6704
6705 /*-----------------------------------------------------------------------
6706 Get message buffer
6707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 sizeof(halStopReq.stopReqParams),
6710 &pSendBuffer, &usDataOffset, &usSendSize))||
6711 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6712 {
6713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6714 "Unable to get send buffer in stop req %x %x %x",
6715 pEventData, pwdiStopParams, wdiStopRspCb);
6716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006717 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 }
6719
6720 /*-----------------------------------------------------------------------
6721 Fill in the message
6722 -----------------------------------------------------------------------*/
6723 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6724 pwdiStopParams->wdiStopReason);
6725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 wpalMemoryCopy( pSendBuffer+usDataOffset,
6727 &halStopReq.stopReqParams,
6728 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006729
6730 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006732
6733 /*! TO DO: stop the data services */
6734 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6735 {
6736 /*Stop the STA Table !UT- check this logic again
6737 It is safer to do it here than on the response - because a stop is imminent*/
6738 WDI_STATableStop(pWDICtx);
6739
6740 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006741 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6742 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 {
6744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6745 "WDI Init failed to reset power state event");
6746
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006748 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 }
6750 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006751 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6752 if( eWLAN_PAL_STATUS_SUCCESS != status )
6753 {
6754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6755 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6756 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006757 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006758 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006760 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006761 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006762 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6763 WDI_SET_POWER_STATE_TIMEOUT);
6764 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6767 "WDI Init failed to wait on an event");
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006770 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 }
6772 }
6773
6774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006775 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6779
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006780fail:
6781 // Release the message buffer so we don't leak
6782 wpalMemoryFree(pSendBuffer);
6783
6784failRequest:
6785 //WDA should have failure check to avoid the memory leak
6786 return WDI_STATUS_E_FAILURE;
6787
Jeff Johnson295189b2012-06-20 16:38:30 -07006788}/*WDI_ProcessStopReq*/
6789
6790/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006793
6794 @param pWDICtx: pointer to the WLAN DAL context
6795 pEventData: pointer to the event information structure
6796
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 @see
6798 @return Result of the function call
6799*/
6800WDI_Status
6801WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006802(
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 WDI_ControlBlockType* pWDICtx,
6804 WDI_EventInfoType* pEventData
6805)
6806{
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6809
6810 /*Lock control block for cleanup*/
6811 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 /*Clear all pending request*/
6814 WDI_ClearPendingRequests(pWDICtx);
6815
6816 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006818
6819 /* Close Data transport*/
6820 /* FTM mode does not open Data Path */
6821 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6822 {
6823 WDTS_Close(pWDICtx);
6824 }
6825
6826 /*Close the STA Table !UT- check this logic again*/
6827 WDI_STATableClose(pWDICtx);
6828
6829 /*close the PAL */
6830 wptStatus = wpalClose(pWDICtx->pPALContext);
6831 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6832 {
6833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6834 "Failed to wpal Close %d", wptStatus);
6835 WDI_ASSERT(0);
6836 }
6837
6838 /*Transition back to init state*/
6839 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6840
6841 wpalMutexRelease(&pWDICtx->wptMutex);
6842
6843 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006845
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006847}/*WDI_ProcessCloseReq*/
6848
6849
6850/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006851 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006852===========================================================================*/
6853
6854/**
6855 @brief Process Init Scan Request function (called when Main FSM
6856 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006857
6858 @param pWDICtx: pointer to the WLAN DAL context
6859 pEventData: pointer to the event information structure
6860
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 @see
6862 @return Result of the function call
6863*/
6864WDI_Status
6865WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006866(
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 WDI_ControlBlockType* pWDICtx,
6868 WDI_EventInfoType* pEventData
6869)
6870{
6871 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6872 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 wpt_uint16 usDataOffset = 0;
6875 wpt_uint16 usSendSize = 0;
6876 wpt_uint8 i = 0;
6877
6878 tHalInitScanReqMsg halInitScanReqMsg;
6879
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 * It shold be removed once host and riva changes are in sync*/
6882 tHalInitScanConReqMsg halInitScanConReqMsg;
6883
6884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6885
6886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 -------------------------------------------------------------------------*/
6889 if (( NULL == pEventData ) ||
6890 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6891 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6892 {
6893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 }
6898
6899#if 0
6900 wpalMutexAcquire(&pWDICtx->wptMutex);
6901 /*-----------------------------------------------------------------------
6902 Check to see if SCAN is already in progress - if so reject the req
6903 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 -----------------------------------------------------------------------*/
6906 if ( pWDICtx->bScanInProgress )
6907 {
6908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6909 "Scan is already in progress - subsequent scan is not allowed"
6910 " until the first scan completes");
6911
6912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 }
6915
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6917 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918
6919 wpalMutexRelease(&pWDICtx->wptMutex);
6920#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006921 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 * It shold be removed once host and riva changes are in sync*/
6925 /*-----------------------------------------------------------------------
6926 Get message buffer
6927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 sizeof(halInitScanConReqMsg.initScanParams),
6930 &pSendBuffer, &usDataOffset, &usSendSize))||
6931 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6932 {
6933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6934 "Unable to get send buffer in init scan req %x %x %x",
6935 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 }
6939
6940
6941 /*-----------------------------------------------------------------------
6942 Fill in the message
6943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6946
6947 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6948 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6949
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006952 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6956
6957 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6958 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6961 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6965
6966 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6967 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006968 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6970 }
6971
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 wpalMemoryCopy( pSendBuffer+usDataOffset,
6973 &halInitScanConReqMsg.initScanParams,
6974 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 }
6976 else
6977 {
6978 /*-----------------------------------------------------------------------
6979 Get message buffer
6980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 sizeof(halInitScanReqMsg.initScanParams),
6983 &pSendBuffer, &usDataOffset, &usSendSize))||
6984 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6985 {
6986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6987 "Unable to get send buffer in init scan req %x %x %x",
6988 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 }
6992
6993
6994 /*-----------------------------------------------------------------------
6995 Fill in the message
6996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006997 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6999
7000 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7001 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7002
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7009
7010 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7011 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7012
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7015
7016 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7017 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007018 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7020 }
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 wpalMemoryCopy( pSendBuffer+usDataOffset,
7023 &halInitScanReqMsg.initScanParams,
7024 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 }
7026
7027 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007029
7030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7035
7036}/*WDI_ProcessInitScanReq*/
7037
7038/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007041
7042 @param pWDICtx: pointer to the WLAN DAL context
7043 pEventData: pointer to the event information structure
7044
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 @see
7046 @return Result of the function call
7047*/
7048WDI_Status
7049WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007050(
Jeff Johnson295189b2012-06-20 16:38:30 -07007051 WDI_ControlBlockType* pWDICtx,
7052 WDI_EventInfoType* pEventData
7053)
7054{
7055 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7056 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 wpt_uint16 usDataOffset = 0;
7059 wpt_uint16 usSendSize = 0;
7060
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7063
7064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 -------------------------------------------------------------------------*/
7067 if (( NULL == pEventData ) ||
7068 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7069 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7070 {
7071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 }
7076
7077#if 0
7078 wpalMutexAcquire(&pWDICtx->wptMutex);
7079 /*-----------------------------------------------------------------------
7080 Check to see if SCAN is already in progress - start scan is only
7081 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7086 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7087 {
7088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7089 "Scan start not allowed in this state %d %d",
7090 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007091
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 }
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007097
7098 wpalMutexRelease(&pWDICtx->wptMutex);
7099#endif
7100
7101 /*-----------------------------------------------------------------------
7102 Get message buffer
7103 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 sizeof(halStartScanReqMsg.startScanParams),
7106 &pSendBuffer, &usDataOffset, &usSendSize))||
7107 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7108 {
7109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7110 "Unable to get send buffer in start scan req %x %x %x",
7111 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 }
7115
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007118 wpalMemoryCopy( pSendBuffer+usDataOffset,
7119 &halStartScanReqMsg.startScanParams,
7120 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007121
7122 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007123 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007124
7125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7130}/*WDI_ProcessStartScanReq*/
7131
7132
7133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007136
7137 @param pWDICtx: pointer to the WLAN DAL context
7138 pEventData: pointer to the event information structure
7139
Jeff Johnson295189b2012-06-20 16:38:30 -07007140 @see
7141 @return Result of the function call
7142*/
7143WDI_Status
7144WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007145(
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 WDI_ControlBlockType* pWDICtx,
7147 WDI_EventInfoType* pEventData
7148)
7149{
7150 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7151 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 wpt_uint16 usDataOffset = 0;
7154 wpt_uint16 usSendSize = 0;
7155
Jeff Johnsone7245742012-09-05 17:12:55 -07007156 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7158
7159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 -------------------------------------------------------------------------*/
7162 if (( NULL == pEventData ) ||
7163 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7164 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7165 {
7166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 }
7171
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7173 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 * forwarded to HAL and result in hang*/
7175#if 0
7176 wpalMutexAcquire(&pWDICtx->wptMutex);
7177 /*-----------------------------------------------------------------------
7178 Check to see if SCAN is already in progress - end scan is only
7179 allowed when a scan is ongoing and the state of the scan procedure
7180 is started
7181 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007182 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7184 {
7185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7186 "End start not allowed in this state %d %d",
7187 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007188
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 }
7192
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007194
7195 wpalMutexRelease(&pWDICtx->wptMutex);
7196#endif
7197
7198 /*-----------------------------------------------------------------------
7199 Get message buffer
7200 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 sizeof(halEndScanReqMsg.endScanParams),
7203 &pSendBuffer, &usDataOffset, &usSendSize))||
7204 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7205 {
7206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7207 "Unable to get send buffer in start scan req %x %x %x",
7208 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 }
7212
7213 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7214
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 wpalMemoryCopy( pSendBuffer+usDataOffset,
7216 &halEndScanReqMsg.endScanParams,
7217 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007218
7219 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
7222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7227}/*WDI_ProcessEndScanReq*/
7228
7229
7230/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007233
7234 @param pWDICtx: pointer to the WLAN DAL context
7235 pEventData: pointer to the event information structure
7236
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 @see
7238 @return Result of the function call
7239*/
7240WDI_Status
7241WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007242(
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 WDI_ControlBlockType* pWDICtx,
7244 WDI_EventInfoType* pEventData
7245)
7246{
7247 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7248 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 wpt_uint16 usDataOffset = 0;
7251 wpt_uint16 usSendSize = 0;
7252 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007253 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7256
7257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 -------------------------------------------------------------------------*/
7260 if (( NULL == pEventData ) ||
7261 ( NULL == pEventData->pEventData) ||
7262 ( NULL == pEventData->pCBfnc))
7263 {
7264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 }
7269
7270 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7271 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7273 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 * forwarded to HAL and result in hang*/
7275#if 0
7276 wpalMutexAcquire(&pWDICtx->wptMutex);
7277 /*-----------------------------------------------------------------------
7278 Check to see if SCAN is already in progress
7279 Finish scan gets invoked any scan states. ie. abort scan
7280 It should be allowed in any states.
7281 -----------------------------------------------------------------------*/
7282 if ( !pWDICtx->bScanInProgress )
7283 {
7284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7285 "Finish start not allowed in this state %d",
7286 pWDICtx->bScanInProgress );
7287
7288 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 }
7291
7292 /*-----------------------------------------------------------------------
7293 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7297 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 wpalMutexRelease(&pWDICtx->wptMutex);
7299#endif
7300
7301 if ( pWDICtx->bInBmps )
7302 {
7303 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007304 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7305 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7306 {
7307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7308 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7309 WDI_ASSERT(0);
7310 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 }
7312
7313 /*-----------------------------------------------------------------------
7314 Get message buffer
7315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 sizeof(halFinishScanReqMsg.finishScanParams),
7318 &pSendBuffer, &usDataOffset, &usSendSize))||
7319 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7320 {
7321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7322 "Unable to get send buffer in start scan req %x %x %x",
7323 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 }
7327
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7330
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7333
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7336
7337 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7338 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7339
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7349
7350 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7351 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7354 }
7355
7356 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7357 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7358
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 wpalMemoryCopy( pSendBuffer+usDataOffset,
7360 &halFinishScanReqMsg.finishScanParams,
7361 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007362
7363 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007365
7366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7371}/*WDI_ProcessFinishScanReq*/
7372
7373
7374/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007376==========================================================================*/
7377/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 @brief Process BSS Join for a given Session
7379
7380 @param pWDICtx: pointer to the WLAN DAL context
7381 pEventData: pointer to the event information structure
7382
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 @see
7384 @return Result of the function call
7385*/
7386WDI_Status
7387WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007388(
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 WDI_ControlBlockType* pWDICtx,
7390 WDI_JoinReqParamsType* pwdiJoinParams,
7391 WDI_JoinRspCb wdiJoinRspCb,
7392 void* pUserData
7393)
7394{
7395 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 wpt_uint16 usDataOffset = 0;
7398 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007400
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7403
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007404 wpalMutexAcquire(&pWDICtx->wptMutex);
7405
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 /*------------------------------------------------------------------------
7407 Check to see if we have any session with this BSSID already stored, we
7408 should not
7409 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7411 pwdiJoinParams->wdiReqInfo.macBSSID,
7412 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007413
7414 if ( NULL != pBSSSes )
7415 {
7416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007417 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7418 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007419
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007420 /*reset the bAssociationInProgress otherwise the next
7421 *join request will be queued*/
7422 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7423 wpalMutexRelease(&pWDICtx->wptMutex);
7424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 }
7426
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 if ( NULL == pBSSSes )
7432 {
7433
7434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7435 "DAL has no free sessions - cannot run another join");
7436
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007437 /*reset the bAssociationInProgress otherwise the next
7438 *join request will be queued*/
7439 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 }
7443
7444 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7446 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 WDI_MAC_ADDR_LEN);
7448
7449 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007452
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wpalMutexRelease(&pWDICtx->wptMutex);
7454
7455 /*-----------------------------------------------------------------------
7456 Get message buffer
7457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 sizeof(halJoinReqMsg.joinReqParams),
7460 &pSendBuffer, &usDataOffset, &usSendSize))||
7461 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7462 {
7463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7464 "Unable to get send buffer in join req %x %x %x",
7465 pUserData, pwdiJoinParams, wdiJoinRspCb);
7466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
7469
7470 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007472
7473 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 pwdiJoinParams->wdiReqInfo.macSTASelf,
7475 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007476
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7479
7480 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7481
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007482#ifdef WLAN_FEATURE_VOWIFI
7483 halJoinReqMsg.joinReqParams.maxTxPower =
7484 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7485#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7488#endif
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7492 wdiSecondaryChannelOffset);
7493
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 wpalMemoryCopy( pSendBuffer+usDataOffset,
7495 &halJoinReqMsg.joinReqParams,
7496 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007497
7498 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500
7501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7505 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007506
7507}/*WDI_ProcessBSSSessionJoinReq*/
7508
7509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
7513 @param pWDICtx: pointer to the WLAN DAL context
7514 pEventData: pointer to the event information structure
7515
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 @see
7517 @return Result of the function call
7518*/
7519WDI_Status
7520WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007521(
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 WDI_ControlBlockType* pWDICtx,
7523 WDI_EventInfoType* pEventData
7524)
7525{
7526 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7527 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7528 WDI_JoinRspCb wdiJoinRspCb = NULL;
7529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7530
7531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 -------------------------------------------------------------------------*/
7534 if (( NULL == pEventData ) ||
7535 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7536 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7537 {
7538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007543
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 /*-------------------------------------------------------------------------
7545 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 -------------------------------------------------------------------------*/
7548 wpalMutexAcquire(&pWDICtx->wptMutex);
7549
7550 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7551 {
7552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7553 "Association is currently in progress, queueing new join req");
7554
7555 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 pwdiJoinParams->wdiReqInfo.macBSSID);
7558
7559 wpalMutexRelease(&pWDICtx->wptMutex);
7560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 }
7563
7564 /*Starting a new association */
7565 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7566 wpalMutexRelease(&pWDICtx->wptMutex);
7567
7568 /*Process the Join Request*/
7569 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7570 wdiJoinRspCb,pEventData->pUserData);
7571
7572}/*WDI_ProcessJoinReq*/
7573
7574
7575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007578
7579 @param pWDICtx: pointer to the WLAN DAL context
7580 pEventData: pointer to the event information structure
7581
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 @see
7583 @return Result of the function call
7584*/
7585WDI_Status
7586WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007587(
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 WDI_ControlBlockType* pWDICtx,
7589 WDI_EventInfoType* pEventData
7590)
7591{
7592 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7593 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 wpt_uint16 uMsgSize = 0;
7597 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 wpt_uint16 usDataOffset = 0;
7599 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7604
7605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 -------------------------------------------------------------------------*/
7608 if (( NULL == pEventData ) ||
7609 ( NULL == pEventData->pEventData ) ||
7610 ( NULL == pEventData->pCBfnc ))
7611 {
7612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 }
7617
7618 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7619 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7620 /*-------------------------------------------------------------------------
7621 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 -------------------------------------------------------------------------*/
7624 wpalMutexAcquire(&pWDICtx->wptMutex);
7625
7626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7630 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7631 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 {
7635#ifdef WLAN_FEATURE_VOWIFI_11R
7636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 if ( NULL == pBSSSes )
7641 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007642
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7644 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007645
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007649
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7652 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007654
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7658#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 * Request in case of IBSS*/
7661 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7662 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7663 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7664 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7665 {
7666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 if ( NULL == pBSSSes )
7671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007672
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7674 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007675
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007679
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7682 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007684
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7688 }
7689 else
7690 {
7691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7693 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7694 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7695
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 /* for IBSS testing */
7697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 }
7700#endif
7701 }
7702
7703 /*------------------------------------------------------------------------
7704 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 ------------------------------------------------------------------------*/
7707 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7708 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7710 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7711 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7712 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007713
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 wpalMutexRelease(&pWDICtx->wptMutex);
7717
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 }
7720
7721 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7723 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 sizeof(pWDICtx->wdiCachedConfigBssReq));
7725
7726 wpalMutexRelease(&pWDICtx->wptMutex);
7727
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7729#ifdef WLAN_FEATURE_11AC
7730 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007731 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 else
7733#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007734 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007735
7736 /*-----------------------------------------------------------------------
7737 Get message buffer
7738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7741 ( usSendSize < (usDataOffset + uMsgSize )))
7742 {
7743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7744 "Unable to get send buffer in config bss req %x %x %x",
7745 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 }
7749
7750 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007751#ifdef WLAN_FEATURE_11AC
7752 if (WDI_getFwWlanFeatCaps(DOT11AC))
7753 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7754 &pwdiConfigBSSParams->wdiReqInfo);
7755 else
7756#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 &pwdiConfigBSSParams->wdiReqInfo);
7759
7760 /* Need to fill in the STA Index to invalid, since at this point we have not
7761 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763
7764 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7766
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007767#ifdef WLAN_FEATURE_11AC
7768 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7769 wpalMemoryCopy( pSendBuffer+usDataOffset,
7770 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7771 uMsgSize);
7772 }else
7773#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007774 {
7775 if ( uMsgSize <= sizeof(tConfigBssParams) )
7776 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007777 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007778 &halConfigBssReqMsg.uBssParams.configBssParams,
7779 uMsgSize);
7780 }
7781 else
7782 {
7783 return WDI_STATUS_E_FAILURE;
7784 }
7785 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
7787 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789
7790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7794 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 WDI_CONFIG_BSS_RESP);
7796
7797}/*WDI_ProcessConfigBSSReq*/
7798
7799
7800/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007803
7804 @param pWDICtx: pointer to the WLAN DAL context
7805 pEventData: pointer to the event information structure
7806
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 @see
7808 @return Result of the function call
7809*/
7810WDI_Status
7811WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007812(
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 WDI_ControlBlockType* pWDICtx,
7814 WDI_EventInfoType* pEventData
7815)
7816{
7817 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7818 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 wpt_uint16 usDataOffset = 0;
7823 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
Jeff Johnsone7245742012-09-05 17:12:55 -07007826 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7828
7829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 -------------------------------------------------------------------------*/
7832 if (( NULL == pEventData ) ||
7833 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7834 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7835 {
7836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 }
7841
7842 /*-------------------------------------------------------------------------
7843 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 -------------------------------------------------------------------------*/
7846 wpalMutexAcquire(&pWDICtx->wptMutex);
7847
7848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7852 pwdiDelBSSParams->ucBssIdx,
7853 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007854
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 {
7857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 "%s: BSS does not yet exist. ucBssIdx %d",
7859 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007860
7861 wpalMutexRelease(&pWDICtx->wptMutex);
7862
7863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007865
7866 /*------------------------------------------------------------------------
7867 Check if this BSS is being currently processed or queued,
7868 if queued - queue the new request as well
7869 ------------------------------------------------------------------------*/
7870 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7873 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7874 __func__, pwdiDelBSSParams->ucBssIdx);
7875
7876 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7877
7878 wpalMutexRelease(&pWDICtx->wptMutex);
7879
7880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007882
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 /*-----------------------------------------------------------------------
7884 If we receive a Del BSS request for an association that is already in
7885 progress, it indicates that the assoc has failed => we no longer have
7886 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 -----------------------------------------------------------------------*/
7889 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7890 {
7891 /*We can switch to false here because even if a subsequent Join comes in
7892 it will only be processed when DAL transitions out of BUSY state which
7893 happens when the Del BSS request comes */
7894 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7895
7896 /*Former association is complete - prepare next pending assoc for
7897 processing */
7898 WDI_DequeueAssocRequest(pWDICtx);
7899 }
7900
7901 wpalMutexRelease(&pWDICtx->wptMutex);
7902 /*-----------------------------------------------------------------------
7903 Get message buffer
7904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 sizeof(halBssReqMsg.deleteBssParams),
7907 &pSendBuffer, &usDataOffset, &usSendSize))||
7908 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7909 {
7910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7911 "Unable to get send buffer in start req %x %x %x",
7912 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 }
7916
7917 /*Fill in the message request structure*/
7918
7919 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007920 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 wpalMemoryCopy( pSendBuffer+usDataOffset,
7923 &halBssReqMsg.deleteBssParams,
7924 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007925
7926 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7935
Jeff Johnsone7245742012-09-05 17:12:55 -07007936
Jeff Johnson295189b2012-06-20 16:38:30 -07007937}/*WDI_ProcessDelBSSReq*/
7938
7939/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007942
7943 @param pWDICtx: pointer to the WLAN DAL context
7944 pEventData: pointer to the event information structure
7945
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 @see
7947 @return Result of the function call
7948*/
7949WDI_Status
7950WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007951(
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 WDI_ControlBlockType* pWDICtx,
7953 WDI_EventInfoType* pEventData
7954)
7955{
7956 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7957 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 wpt_uint16 usDataOffset = 0;
7962 wpt_uint16 usSendSize = 0;
7963 wpt_uint16 uMsgSize = 0;
7964 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7969
7970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 -------------------------------------------------------------------------*/
7973 if (( NULL == pEventData ) ||
7974 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7975 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7976 {
7977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 }
7982
7983 /*-------------------------------------------------------------------------
7984 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 -------------------------------------------------------------------------*/
7987 wpalMutexAcquire(&pWDICtx->wptMutex);
7988
7989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7993 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7994 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007995
7996 if ( NULL == pBSSSes )
7997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7999 "%s: Association sequence for this BSS does not yet exist - "
8000 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8001 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008002
8003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 }
8006
8007 /*------------------------------------------------------------------------
8008 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 ------------------------------------------------------------------------*/
8011 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8012 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8014 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8015 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008016
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008018
8019 wpalMutexRelease(&pWDICtx->wptMutex);
8020
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
8023
8024 /*-----------------------------------------------------------------------
8025 If Post Assoc was not yet received - the current association must
8026 be in progress
8027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8030 {
8031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8032 "Association sequence for this BSS association no longer in "
8033 "progress - not allowed");
8034
8035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 }
8038
8039 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 -----------------------------------------------------------------------*/
8042 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8043 {
8044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8045 "Post Assoc not allowed before JOIN - failing request");
8046
8047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 }
8050
8051 wpalMutexRelease(&pWDICtx->wptMutex);
8052
8053 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8054 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8055 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8060 ( usSendSize < (usDataOffset + uMsgSize )))
8061 {
8062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8063 "Unable to get send buffer in start req %x %x %x",
8064 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
8068
8069 /*Copy the STA parameters */
8070 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8071 &pwdiPostAssocParams->wdiSTAParams );
8072
8073 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 WDI_STATableFindStaidByAddr(pWDICtx,
8076 pwdiPostAssocParams->wdiSTAParams.macSTA,
8077 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8078 {
8079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8080 "This station does not exist in the WDI Station Table %d");
8081 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008082 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 }
8085
8086 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 pBSSSes->ucBSSIdx;
8089
8090 /*Copy the BSS parameters */
8091 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8092 &pwdiPostAssocParams->wdiBSSParams);
8093
8094 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 WDI_STATableFindStaidByAddr(pWDICtx,
8097 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 {
8100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8101 "This station does not exist in the WDI Station Table %d");
8102 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008103 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106
8107 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 pBSSSes->ucBSSIdx;
8110
Jeff Johnsone7245742012-09-05 17:12:55 -07008111
8112 wpalMemoryCopy( pSendBuffer+usDataOffset,
8113 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8114 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008115
8116 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8117
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8119 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8120 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126
8127 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8136
Jeff Johnsone7245742012-09-05 17:12:55 -07008137
Jeff Johnson295189b2012-06-20 16:38:30 -07008138}/*WDI_ProcessPostAssocReq*/
8139
8140/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008143
8144 @param pWDICtx: pointer to the WLAN DAL context
8145 pEventData: pointer to the event information structure
8146
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 @see
8148 @return Result of the function call
8149*/
8150WDI_Status
8151WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008152(
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_ControlBlockType* pWDICtx,
8154 WDI_EventInfoType* pEventData
8155)
8156{
8157 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8158 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 wpt_uint16 usDataOffset = 0;
8163 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8166
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8169
8170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 -------------------------------------------------------------------------*/
8173 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8174 ( NULL == pEventData->pCBfnc ))
8175 {
8176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 }
8181
8182 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8183 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8184 /*-------------------------------------------------------------------------
8185 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 -------------------------------------------------------------------------*/
8188 wpalMutexAcquire(&pWDICtx->wptMutex);
8189
8190 /*------------------------------------------------------------------------
8191 Find the BSS for which the request is made and identify WDI session
8192 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8194 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 &macBSSID))
8196 {
8197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8198 "This station does not exist in the WDI Station Table %d");
8199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 }
8202
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8204 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8207 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8208 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008209
8210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 }
8213
8214 /*------------------------------------------------------------------------
8215 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 ------------------------------------------------------------------------*/
8218 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8219 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8221 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8222 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008223
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 }
8228
8229 wpalMutexRelease(&pWDICtx->wptMutex);
8230 /*-----------------------------------------------------------------------
8231 Get message buffer
8232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 sizeof(halDelStaReqMsg.delStaParams),
8235 &pSendBuffer, &usDataOffset, &usSendSize))||
8236 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8237 {
8238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8239 "Unable to get send buffer in start req %x %x %x",
8240 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 }
8244
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8246 wpalMemoryCopy( pSendBuffer+usDataOffset,
8247 &halDelStaReqMsg.delStaParams,
8248 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008249
8250 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008252
8253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8258
8259}/*WDI_ProcessDelSTAReq*/
8260
8261
8262/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008264==========================================================================*/
8265/**
8266 @brief Process Set BSS Key Request function (called when Main FSM
8267 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008268
8269 @param pWDICtx: pointer to the WLAN DAL context
8270 pEventData: pointer to the event information structure
8271
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 @see
8273 @return Result of the function call
8274*/
8275WDI_Status
8276WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008277(
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 WDI_ControlBlockType* pWDICtx,
8279 WDI_EventInfoType* pEventData
8280)
8281{
8282 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8283 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 wpt_uint16 usDataOffset = 0;
8288 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8291 wpt_uint8 keyIndex = 0;
8292
8293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8294
8295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 -------------------------------------------------------------------------*/
8298 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8299 ( NULL == pEventData->pCBfnc ))
8300 {
8301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 }
8306
8307 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8308 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8309 /*-------------------------------------------------------------------------
8310 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 -------------------------------------------------------------------------*/
8313 wpalMutexAcquire(&pWDICtx->wptMutex);
8314
8315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8319 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8320 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 {
8324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8326 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 }
8331
8332 /*------------------------------------------------------------------------
8333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 ------------------------------------------------------------------------*/
8336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8337 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8339 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8340 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008341
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 }
8346
8347
8348 wpalMutexRelease(&pWDICtx->wptMutex);
8349 /*-----------------------------------------------------------------------
8350 Get message buffer
8351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8354 &pSendBuffer, &usDataOffset, &usSendSize))||
8355 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8356 {
8357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8358 "Unable to get send buffer in set bss key req %x %x %x",
8359 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 }
8363
8364 /*-----------------------------------------------------------------------
8365 Copy the Key parameters into the HAL message
8366 -----------------------------------------------------------------------*/
8367
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8375
8376 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8377 keyIndex++)
8378 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8381 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8382 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8383 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8384 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8385 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8392 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 WDI_MAX_KEY_LENGTH);
8395 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008396
8397 wpalMemoryCopy( pSendBuffer+usDataOffset,
8398 &halSetBssKeyReqMsg.setBssKeyParams,
8399 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008400
8401 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008403
8404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8408 wdiSetBSSKeyRspCb, pEventData->pUserData,
8409 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008410
8411}/*WDI_ProcessSetBssKeyReq*/
8412
8413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008416
8417 @param pWDICtx: pointer to the WLAN DAL context
8418 pEventData: pointer to the event information structure
8419
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 @see
8421 @return Result of the function call
8422*/
8423WDI_Status
8424WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008425(
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 WDI_ControlBlockType* pWDICtx,
8427 WDI_EventInfoType* pEventData
8428)
8429{
8430 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8431 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 wpt_uint16 usDataOffset = 0;
8436 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8440
8441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 -------------------------------------------------------------------------*/
8444 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8445 ( NULL == pEventData->pCBfnc ))
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 }
8452
8453 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8454 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8455 /*-------------------------------------------------------------------------
8456 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 -------------------------------------------------------------------------*/
8459 wpalMutexAcquire(&pWDICtx->wptMutex);
8460
8461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8465 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8466 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 {
8470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8472 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008473
8474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 }
8477
8478 /*------------------------------------------------------------------------
8479 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 ------------------------------------------------------------------------*/
8482 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8485 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8486 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008487
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 }
8492
8493
8494 wpalMutexRelease(&pWDICtx->wptMutex);
8495
8496 /*-----------------------------------------------------------------------
8497 Get message buffer
8498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8501 &pSendBuffer, &usDataOffset, &usSendSize))||
8502 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8503 {
8504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8505 "Unable to get send buffer in set bss key req %x %x %x",
8506 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 }
8510 /*-----------------------------------------------------------------------
8511 Copy the Key parameters into the HAL message
8512 -----------------------------------------------------------------------*/
8513 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8514
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8517
8518 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8519
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8522
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 wpalMemoryCopy( pSendBuffer+usDataOffset,
8524 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8525 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008526
8527 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529
8530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008536}/*WDI_ProcessRemoveBssKeyReq*/
8537
8538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008541
8542 @param pWDICtx: pointer to the WLAN DAL context
8543 pEventData: pointer to the event information structure
8544
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 @see
8546 @return Result of the function call
8547*/
8548WDI_Status
8549WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008550(
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 WDI_ControlBlockType* pWDICtx,
8552 WDI_EventInfoType* pEventData
8553)
8554{
8555 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8556 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpt_uint16 usDataOffset = 0;
8560 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8565 wpt_uint8 keyIndex = 0;
8566
8567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8568
8569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 -------------------------------------------------------------------------*/
8572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8573 ( NULL == pEventData->pCBfnc ))
8574 {
8575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 }
8580
8581 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8582 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8583 /*-------------------------------------------------------------------------
8584 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 -------------------------------------------------------------------------*/
8587 wpalMutexAcquire(&pWDICtx->wptMutex);
8588
8589 /*------------------------------------------------------------------------
8590 Find the BSS for which the request is made and identify WDI session
8591 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8593 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 &macBSSID))
8595 {
8596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8597 "This station does not exist in the WDI Station Table %d");
8598 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 }
8601
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8603 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8606 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8607 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008608
8609 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008612
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 /*------------------------------------------------------------------------
8614 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 ------------------------------------------------------------------------*/
8617 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8618 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8620 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8621 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008622
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 }
8627
8628
8629 wpalMutexRelease(&pWDICtx->wptMutex);
8630 /*-----------------------------------------------------------------------
8631 Get message buffer
8632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8635 &pSendBuffer, &usDataOffset, &usSendSize))||
8636 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8637 {
8638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8639 "Unable to get send buffer in set bss key req %x %x %x",
8640 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 }
8644 /*-----------------------------------------------------------------------
8645 Copy the STA Key parameters into the HAL message
8646 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8649
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8652
8653 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8654
8655 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8656
8657 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8658
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8660 keyIndex++)
8661 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8664 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8665 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8666 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8667 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8668 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8675 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 WDI_MAX_KEY_LENGTH);
8678 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 wpalMemoryCopy( pSendBuffer+usDataOffset,
8681 &halSetStaKeyReqMsg.setStaKeyParams,
8682 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008683
8684 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686
8687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8691 wdiSetSTAKeyRspCb, pEventData->pUserData,
8692 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008693
8694}/*WDI_ProcessSetSTAKeyReq*/
8695
8696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008699
8700 @param pWDICtx: pointer to the WLAN DAL context
8701 pEventData: pointer to the event information structure
8702
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 @see
8704 @return Result of the function call
8705*/
8706WDI_Status
8707WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008708(
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 WDI_ControlBlockType* pWDICtx,
8710 WDI_EventInfoType* pEventData
8711)
8712{
8713 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8714 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8715 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 wpt_uint16 usDataOffset = 0;
8718 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 wpt_macAddr macBSSID;
8721 wpt_uint8 ucCurrentBSSSesIdx;
8722 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8724
8725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 -------------------------------------------------------------------------*/
8728 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8729 ( NULL == pEventData->pCBfnc ))
8730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 }
8736
8737 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8738 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8739 /*-------------------------------------------------------------------------
8740 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 -------------------------------------------------------------------------*/
8743 wpalMutexAcquire(&pWDICtx->wptMutex);
8744
8745 /*------------------------------------------------------------------------
8746 Find the BSS for which the request is made and identify WDI session
8747 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8749 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 &macBSSID))
8751 {
8752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8753 "This station does not exist in the WDI Station Table %d");
8754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8759 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8762 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8763 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008764
8765 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008768
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 /*------------------------------------------------------------------------
8770 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 ------------------------------------------------------------------------*/
8773 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8774 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8776 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8777 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 }
8783
8784
8785
8786 wpalMutexRelease(&pWDICtx->wptMutex);
8787 /*-----------------------------------------------------------------------
8788 Get message buffer
8789 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8792 &pSendBuffer, &usDataOffset, &usSendSize))||
8793 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8794 {
8795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8796 "Unable to get send buffer in set bss key req %x %x %x",
8797 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 }
8801
8802 /*-----------------------------------------------------------------------
8803 Copy the Key parameters into the HAL message
8804 -----------------------------------------------------------------------*/
8805
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8808
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8811
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8817
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 wpalMemoryCopy( pSendBuffer+usDataOffset,
8819 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8820 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824
8825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832}/*WDI_ProcessRemoveSTAKeyReq*/
8833
8834/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008837
8838 @param pWDICtx: pointer to the WLAN DAL context
8839 pEventData: pointer to the event information structure
8840
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 @see
8842 @return Result of the function call
8843*/
8844WDI_Status
8845WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008846(
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 WDI_ControlBlockType* pWDICtx,
8848 WDI_EventInfoType* pEventData
8849)
8850{
8851 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8852 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8853 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 wpt_uint16 usDataOffset = 0;
8856 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8861 wpt_uint8 keyIndex = 0;
8862
8863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8864
8865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 -------------------------------------------------------------------------*/
8868 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8869 ( NULL == pEventData->pCBfnc ))
8870 {
8871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 }
8876
8877 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8878 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8879 /*-------------------------------------------------------------------------
8880 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 -------------------------------------------------------------------------*/
8883 wpalMutexAcquire(&pWDICtx->wptMutex);
8884
8885 /*------------------------------------------------------------------------
8886 Find the BSS for which the request is made and identify WDI session
8887 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8889 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 &macBSSID))
8891 {
8892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8893 "This station does not exist in the WDI Station Table %d");
8894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 }
8897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8899 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 {
8901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8903 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008904
8905 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008908
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 /*------------------------------------------------------------------------
8910 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 ------------------------------------------------------------------------*/
8913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8914 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8916 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8917 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008918
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924
8925 wpalMutexRelease(&pWDICtx->wptMutex);
8926 /*-----------------------------------------------------------------------
8927 Get message buffer
8928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8931 &pSendBuffer, &usDataOffset, &usSendSize))||
8932 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8933 {
8934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8935 "Unable to get send buffer in set bss key req %x %x %x",
8936 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 }
8940 /*-----------------------------------------------------------------------
8941 Copy the STA Key parameters into the HAL message
8942 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8945
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8948
8949 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8950
8951 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8952
8953 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8954
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8956 keyIndex++)
8957 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8960 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8961 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8962 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8963 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8964 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8971 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 WDI_MAX_KEY_LENGTH);
8974 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008975
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 wpalMemoryCopy( pSendBuffer+usDataOffset,
8977 &halSetStaKeyReqMsg.setStaKeyParams,
8978 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008979
8980 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982
8983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8987 wdiSetSTAKeyRspCb, pEventData->pUserData,
8988 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008989
8990}/*WDI_ProcessSetSTABcastKeyReq*/
8991
8992/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008995
8996 @param pWDICtx: pointer to the WLAN DAL context
8997 pEventData: pointer to the event information structure
8998
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 @see
9000 @return Result of the function call
9001*/
9002WDI_Status
9003WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009004(
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 WDI_ControlBlockType* pWDICtx,
9006 WDI_EventInfoType* pEventData
9007)
9008{
9009 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9010 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9011 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 wpt_uint16 usDataOffset = 0;
9014 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wpt_macAddr macBSSID;
9017 wpt_uint8 ucCurrentBSSSesIdx;
9018 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9020
9021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 -------------------------------------------------------------------------*/
9024 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9025 ( NULL == pEventData->pCBfnc ))
9026 {
9027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 }
9032
9033 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9034 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9035 /*-------------------------------------------------------------------------
9036 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 -------------------------------------------------------------------------*/
9039 wpalMutexAcquire(&pWDICtx->wptMutex);
9040
9041 /*------------------------------------------------------------------------
9042 Find the BSS for which the request is made and identify WDI session
9043 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9045 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 &macBSSID))
9047 {
9048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9049 "This station does not exist in the WDI Station Table %d");
9050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 }
9053
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9055 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9058 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009060
9061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 /*------------------------------------------------------------------------
9066 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 ------------------------------------------------------------------------*/
9069 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9070 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9072 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9073 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 }
9079
9080
9081
9082 wpalMutexRelease(&pWDICtx->wptMutex);
9083 /*-----------------------------------------------------------------------
9084 Get message buffer
9085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9088 &pSendBuffer, &usDataOffset, &usSendSize))||
9089 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9090 {
9091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9092 "Unable to get send buffer in set bss key req %x %x %x",
9093 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 }
9097
9098 /*-----------------------------------------------------------------------
9099 Copy the Key parameters into the HAL message
9100 -----------------------------------------------------------------------*/
9101
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9104
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9110
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9113
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 wpalMemoryCopy( pSendBuffer+usDataOffset,
9115 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9116 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009117
9118 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009127
9128}/*WDI_ProcessRemoveSTABcastKeyReq*/
9129
9130/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009132==========================================================================*/
9133/**
9134 @brief Process Add TSpec Request function (called when Main FSM
9135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009136
9137 @param pWDICtx: pointer to the WLAN DAL context
9138 pEventData: pointer to the event information structure
9139
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 @see
9141 @return Result of the function call
9142*/
9143WDI_Status
9144WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009145(
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 WDI_ControlBlockType* pWDICtx,
9147 WDI_EventInfoType* pEventData
9148)
9149{
9150 WDI_AddTSReqParamsType* pwdiAddTSParams;
9151 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 wpt_uint16 usDataOffset = 0;
9156 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 wpt_macAddr macBSSID;
9159 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009160
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9162
9163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 -------------------------------------------------------------------------*/
9166 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9167 ( NULL == pEventData->pCBfnc ))
9168 {
9169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 }
9174
9175 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9176 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9177 /*-------------------------------------------------------------------------
9178 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 -------------------------------------------------------------------------*/
9181 wpalMutexAcquire(&pWDICtx->wptMutex);
9182
9183 /*------------------------------------------------------------------------
9184 Find the BSS for which the request is made and identify WDI session
9185 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9187 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 &macBSSID))
9189 {
9190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9191 "This station does not exist in the WDI Station Table %d");
9192 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 }
9195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9197 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9200 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9201 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009206
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 /*------------------------------------------------------------------------
9208 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 ------------------------------------------------------------------------*/
9211 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9212 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9214 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9215 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009216
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 }
9221
9222 wpalMutexRelease(&pWDICtx->wptMutex);
9223 /*-----------------------------------------------------------------------
9224 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9228 sizeof(halAddTsParams),
9229 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 &usSendSize))||
9231 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9232 {
9233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9234 "Unable to get send buffer in set bss key req %x %x %x",
9235 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 }
9239
9240 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9241 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9242
9243 //TSPEC IE
9244 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9245 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9276
9277 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9292
9293 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9298
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 wpalMemoryCopy( pSendBuffer+usDataOffset,
9300 &halAddTsParams,
9301 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009302
9303 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
9306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009312}/*WDI_ProcessAddTSpecReq*/
9313
9314
9315/**
9316 @brief Process Del TSpec Request function (called when Main FSM
9317 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009318
9319 @param pWDICtx: pointer to the WLAN DAL context
9320 pEventData: pointer to the event information structure
9321
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 @see
9323 @return Result of the function call
9324*/
9325WDI_Status
9326WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009327(
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 WDI_ControlBlockType* pWDICtx,
9329 WDI_EventInfoType* pEventData
9330)
9331{
9332 WDI_DelTSReqParamsType* pwdiDelTSParams;
9333 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 wpt_uint16 usDataOffset = 0;
9338 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9341
9342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 -------------------------------------------------------------------------*/
9345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9346 ( NULL == pEventData->pCBfnc ))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 }
9353
9354 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9355 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9356
9357 /*-------------------------------------------------------------------------
9358 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 -------------------------------------------------------------------------*/
9361 wpalMutexAcquire(&pWDICtx->wptMutex);
9362
9363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9367 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9368 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009369
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9373 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9374 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9375
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 }
9379
9380 /*------------------------------------------------------------------------
9381 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 ------------------------------------------------------------------------*/
9384 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9385 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9387 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9388 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 }
9394
9395
9396 wpalMutexRelease(&pWDICtx->wptMutex);
9397 /*-----------------------------------------------------------------------
9398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9403 &pSendBuffer, &usDataOffset, &usSendSize))||
9404 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9405 {
9406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9407 "Unable to get send buffer in set bss key req %x %x %x",
9408 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 }
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 wpalMemoryCopy( pSendBuffer+usDataOffset,
9414 &pwdiDelTSParams->wdiDelTSInfo,
9415 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009416
9417 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
9420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9424 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009425}/*WDI_ProcessDelTSpecReq*/
9426
9427/**
9428 @brief Process Update EDCA Params Request function (called when
9429 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009430
9431 @param pWDICtx: pointer to the WLAN DAL context
9432 pEventData: pointer to the event information structure
9433
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 @see
9435 @return Result of the function call
9436*/
9437WDI_Status
9438WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009439(
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 WDI_ControlBlockType* pWDICtx,
9441 WDI_EventInfoType* pEventData
9442)
9443{
9444 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9445 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 wpt_uint16 usDataOffset = 0;
9450 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9453
9454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 -------------------------------------------------------------------------*/
9457 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9458 ( NULL == pEventData->pCBfnc ))
9459 {
9460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
9466 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9467 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9468 /*-------------------------------------------------------------------------
9469 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 -------------------------------------------------------------------------*/
9472 wpalMutexAcquire(&pWDICtx->wptMutex);
9473
9474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9478 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9479 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 {
9483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9485 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
9487 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 }
9490
9491 /*------------------------------------------------------------------------
9492 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 ------------------------------------------------------------------------*/
9495 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9496 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9498 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9499 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009500
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 }
9505
9506
9507 wpalMutexRelease(&pWDICtx->wptMutex);
9508 /*-----------------------------------------------------------------------
9509 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9514 &pSendBuffer, &usDataOffset, &usSendSize))||
9515 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9516 {
9517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9518 "Unable to get send buffer in set bss key req %x %x %x",
9519 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 }
9523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 wpalMemoryCopy( pSendBuffer+usDataOffset,
9525 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9526 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009527
9528 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530
9531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9535 wdiUpdateEDCARspCb, pEventData->pUserData,
9536 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009537}/*WDI_ProcessUpdateEDCAParamsReq*/
9538
9539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009542
9543 @param pWDICtx: pointer to the WLAN DAL context
9544 pEventData: pointer to the event information structure
9545
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 @see
9547 @return Result of the function call
9548*/
9549WDI_Status
9550WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009551(
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 WDI_ControlBlockType* pWDICtx,
9553 WDI_EventInfoType* pEventData
9554)
9555{
9556 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9557 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 wpt_uint16 usDataOffset = 0;
9562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 wpt_macAddr macBSSID;
9565
9566 tAddBASessionReqMsg halAddBASessionReq;
9567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9568
9569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 -------------------------------------------------------------------------*/
9572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9573 ( NULL == pEventData->pCBfnc ))
9574 {
9575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 }
9580
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9585 /*-------------------------------------------------------------------------
9586 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 -------------------------------------------------------------------------*/
9589 wpalMutexAcquire(&pWDICtx->wptMutex);
9590
9591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9595 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 &macBSSID))
9597 {
9598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9599 "This station does not exist in the WDI Station Table %d");
9600 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 }
9603
9604
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9610 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9611 __func__, MAC_ADDR_ARRAY(macBSSID));
9612
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 }
9616
9617 /*------------------------------------------------------------------------
9618 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 ------------------------------------------------------------------------*/
9621 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9624 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009626
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 }
9631
9632
9633 wpalMutexRelease(&pWDICtx->wptMutex);
9634 /*-----------------------------------------------------------------------
9635 Get message buffer
9636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9638 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 sizeof(halAddBASessionReq.addBASessionParams),
9640 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9643 {
9644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9645 "Unable to get send buffer in Add BA session req %x %x %x",
9646 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650
9651 halAddBASessionReq.addBASessionParams.staIdx =
9652 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9653 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9654 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9655 WDI_MAC_ADDR_LEN);
9656 halAddBASessionReq.addBASessionParams.baTID =
9657 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9658 halAddBASessionReq.addBASessionParams.baPolicy =
9659 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9660 halAddBASessionReq.addBASessionParams.baBufferSize =
9661 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9662 halAddBASessionReq.addBASessionParams.baTimeout =
9663 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9664 halAddBASessionReq.addBASessionParams.baSSN =
9665 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9666 halAddBASessionReq.addBASessionParams.baDirection =
9667 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9668
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 wpalMemoryCopy( pSendBuffer+usDataOffset,
9670 &halAddBASessionReq.addBASessionParams,
9671 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009672
9673 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675
9676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9680 wdiAddBASessionRspCb, pEventData->pUserData,
9681 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682}/*WDI_ProcessAddBASessionReq*/
9683
9684/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009687
9688 @param pWDICtx: pointer to the WLAN DAL context
9689 pEventData: pointer to the event information structure
9690
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 @see
9692 @return Result of the function call
9693*/
9694WDI_Status
9695WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009696(
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 WDI_ControlBlockType* pWDICtx,
9698 WDI_EventInfoType* pEventData
9699)
9700{
9701 WDI_DelBAReqParamsType* pwdiDelBAParams;
9702 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 wpt_uint16 usDataOffset = 0;
9707 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 wpt_macAddr macBSSID;
9710 tDelBAParams halDelBAparam;
9711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9712
9713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 -------------------------------------------------------------------------*/
9716 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9717 ( NULL == pEventData->pCBfnc ))
9718 {
9719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 }
9724
9725 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9726 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9727 /*-------------------------------------------------------------------------
9728 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
9731 wpalMutexAcquire(&pWDICtx->wptMutex);
9732
9733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9737 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 &macBSSID))
9739 {
9740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9741 "This station does not exist in the WDI Station Table %d");
9742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 }
9745
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009747
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9751 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9752 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009753
9754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 }
9757
9758 /*------------------------------------------------------------------------
9759 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 ------------------------------------------------------------------------*/
9762 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9763 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9765 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9766 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009767
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 }
9772
9773 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 sizeof(halDelBAparam),
9776 &pSendBuffer, &usDataOffset, &usSendSize))||
9777 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9778 {
9779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9780 "Unable to get send buffer for DEL BA req %x %x %x",
9781 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 }
9785
9786 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9787 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9788 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9789
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 wpalMemoryCopy( pSendBuffer+usDataOffset,
9791 &halDelBAparam,
9792 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009793
9794 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009796
9797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9801 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009802}/*WDI_ProcessDelBAReq*/
9803
9804#ifdef FEATURE_WLAN_CCX
9805
9806WDI_Status
9807WDI_ProcessTSMStatsReq
9808(
9809 WDI_ControlBlockType* pWDICtx,
9810 WDI_EventInfoType* pEventData
9811)
9812{
9813 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9814 WDI_TsmRspCb wdiTSMRspCb;
9815 wpt_uint8 ucCurrentBSSSesIdx = 0;
9816 WDI_BSSSessionType* pBSSSes = NULL;
9817 wpt_uint8* pSendBuffer = NULL;
9818 wpt_uint16 usDataOffset = 0;
9819 wpt_uint16 usSendSize = 0;
9820 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9821 tTsmStatsParams halTsmStatsReqParams = {0};
9822
9823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9824
9825 /*-------------------------------------------------------------------------
9826 Sanity check
9827 -------------------------------------------------------------------------*/
9828 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9829 ( NULL == pEventData->pCBfnc ))
9830 {
9831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 WDI_ASSERT(0);
9834 return WDI_STATUS_E_FAILURE;
9835 }
9836
9837 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9838 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9839 /*-------------------------------------------------------------------------
9840 Check to see if we are in the middle of an association, if so queue, if
9841 not it means it is free to process request
9842 -------------------------------------------------------------------------*/
9843 wpalMutexAcquire(&pWDICtx->wptMutex);
9844
9845 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9846 if ( NULL == pBSSSes )
9847 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9849 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9850 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009851
9852 wpalMutexRelease(&pWDICtx->wptMutex);
9853 return WDI_STATUS_E_NOT_ALLOWED;
9854 }
9855
9856 /*------------------------------------------------------------------------
9857 Check if this BSS is being currently processed or queued,
9858 if queued - queue the new request as well
9859 ------------------------------------------------------------------------*/
9860 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9861 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9863 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9864 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009865
9866 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9867 wpalMutexRelease(&pWDICtx->wptMutex);
9868 return wdiStatus;
9869 }
9870
9871 wpalMutexRelease(&pWDICtx->wptMutex);
9872 /*-----------------------------------------------------------------------
9873 Get message buffer
9874 ! TO DO : proper conversion into the HAL Message Request Format
9875 -----------------------------------------------------------------------*/
9876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9877 sizeof(halTsmStatsReqParams),
9878 &pSendBuffer, &usDataOffset, &usSendSize))||
9879 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9880 {
9881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9882 "Unable to get send buffer in set bss key req %x %x %x",
9883 pEventData, pwdiTSMParams, wdiTSMRspCb);
9884 WDI_ASSERT(0);
9885 return WDI_STATUS_E_FAILURE;
9886 }
9887
9888 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9889 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9890 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9891 WDI_MAC_ADDR_LEN);
9892 wpalMemoryCopy( pSendBuffer+usDataOffset,
9893 &halTsmStatsReqParams,
9894 sizeof(halTsmStatsReqParams));
9895
9896 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9897 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9898
9899 /*-------------------------------------------------------------------------
9900 Send TSM Stats Request to HAL
9901 -------------------------------------------------------------------------*/
9902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9903 wdiTSMRspCb, pEventData->pUserData,
9904 WDI_TSM_STATS_RESP);
9905}/*WDI_ProcessTSMStatsReq*/
9906
9907#endif
9908
9909
9910/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009913
9914 @param pWDICtx: pointer to the WLAN DAL context
9915 pEventData: pointer to the event information structure
9916
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 @see
9918 @return Result of the function call
9919*/
9920WDI_Status
9921WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009922(
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 WDI_ControlBlockType* pWDICtx,
9924 WDI_EventInfoType* pEventData
9925)
9926{
9927 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9928 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 wpt_uint16 usDataOffset = 0;
9931 wpt_uint16 usSendSize = 0;
9932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9933
9934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 -------------------------------------------------------------------------*/
9937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9938 ( NULL == pEventData->pCBfnc ))
9939 {
9940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
9946 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9947 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9948 /*-----------------------------------------------------------------------
9949 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9954 &pSendBuffer, &usDataOffset, &usSendSize))||
9955 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9956 {
9957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9958 "Unable to get send buffer in set bss key req %x %x %x",
9959 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 }
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 wpalMemoryCopy( pSendBuffer+usDataOffset,
9965 &pwdiFlushAcParams->wdiFlushAcInfo,
9966 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009967
9968 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009970
9971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9975 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009976}/*WDI_ProcessFlushAcReq*/
9977
9978/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009981
9982 @param pWDICtx: pointer to the WLAN DAL context
9983 pEventData: pointer to the event information structure
9984
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 @see
9986 @return Result of the function call
9987*/
9988WDI_Status
9989WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009990(
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 WDI_ControlBlockType* pWDICtx,
9992 WDI_EventInfoType* pEventData
9993)
9994{
9995 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9996 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 wpt_uint16 usDataOffset = 0;
9999 wpt_uint16 usSendSize = 0;
10000
10001 tBtAmpEventMsg haltBtAmpEventMsg;
10002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10003
10004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 -------------------------------------------------------------------------*/
10007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10008 ( NULL == pEventData->pCBfnc ))
10009 {
10010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 }
10015
10016 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10017 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10018 /*-----------------------------------------------------------------------
10019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10024 &pSendBuffer, &usDataOffset, &usSendSize))||
10025 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10026 {
10027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10028 "Unable to get send buffer in BT AMP event req %x %x %x",
10029 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
10033
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 wpalMemoryCopy( pSendBuffer+usDataOffset,
10037 &haltBtAmpEventMsg.btAmpEventParams,
10038 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010039
10040 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010042
10043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10047 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010048}/*WDI_ProcessBtAmpEventReq*/
10049
10050/**
10051 @brief Process Add STA self Request function (called when Main FSM
10052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010053
10054 @param pWDICtx: pointer to the WLAN DAL context
10055 pEventData: pointer to the event information structure
10056
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 @see
10058 @return Result of the function call
10059*/
10060WDI_Status
10061WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010062(
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 WDI_ControlBlockType* pWDICtx,
10064 WDI_EventInfoType* pEventData
10065)
10066{
10067 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10068 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 wpt_uint16 usDataOffset = 0;
10071 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10074
10075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 -------------------------------------------------------------------------*/
10078 if (( NULL == pEventData ) ||
10079 ( NULL == pEventData->pEventData) ||
10080 ( NULL == pEventData->pCBfnc))
10081 {
10082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 }
10087
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10092 /*-----------------------------------------------------------------------
10093 Get message buffer
10094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10096 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 sizeof(tAddStaSelfParams),
10098 &pSendBuffer, &usDataOffset, &usSendSize))||
10099 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10100 {
10101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10102 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10103 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 }
10107
10108 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10116 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010117
10118 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120
10121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10125 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10126 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010127}/*WDI_ProcessAddSTASelfReq*/
10128
10129
10130
10131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010134
10135 @param pWDICtx: pointer to the WLAN DAL context
10136 pEventData: pointer to the event information structure
10137
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 @see
10139 @return Result of the function call
10140*/
10141WDI_Status
10142WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010143(
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 WDI_ControlBlockType* pWDICtx,
10145 WDI_EventInfoType* pEventData
10146)
10147{
10148 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10149 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 wpt_uint16 usDataOffset = 0;
10152 wpt_uint16 usSendSize = 0;
10153 tDelStaSelfParams halSetDelSelfSTAParams;
10154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10155
10156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 -------------------------------------------------------------------------*/
10159 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10160 ( NULL == pEventData->pCBfnc ))
10161 {
10162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 }
10167
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10170 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10171
10172 /*-----------------------------------------------------------------------
10173 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10178 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10181 {
10182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10183 "Unable to get send buffer in Del Sta Self req %x %x %x",
10184 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10191
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10193 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
10195 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
10198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10202 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 WDI_DEL_STA_SELF_RESP);
10204
10205}
10206
Jeff Johnsone7245742012-09-05 17:12:55 -070010207#ifdef FEATURE_OEM_DATA_SUPPORT
10208/**
10209 @brief Process Start Oem Data Request function (called when Main
10210 FSM allows it)
10211
10212 @param pWDICtx: pointer to the WLAN DAL context
10213 pEventData: pointer to the event information structure
10214
10215 @see
10216 @return Result of the function call
10217*/
10218WDI_Status
10219WDI_ProcessStartOemDataReq
10220(
10221 WDI_ControlBlockType* pWDICtx,
10222 WDI_EventInfoType* pEventData
10223)
10224{
10225 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10226 WDI_oemDataRspCb wdiOemDataRspCb;
10227 wpt_uint8* pSendBuffer = NULL;
10228 wpt_uint16 usDataOffset = 0;
10229 wpt_uint16 usSendSize = 0;
10230 wpt_uint16 reqLen;
10231 tStartOemDataReqParams* halStartOemDataReqParams;
10232
10233 /*-------------------------------------------------------------------------
10234 Sanity check
10235 -------------------------------------------------------------------------*/
10236 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10237 ( NULL == pEventData->pCBfnc ))
10238 {
10239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010240 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 WDI_ASSERT(0);
10242 return WDI_STATUS_E_FAILURE;
10243 }
10244
10245 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10246 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10247
10248 /*-----------------------------------------------------------------------
10249 Get message buffer
10250 -----------------------------------------------------------------------*/
10251
10252 reqLen = sizeof(tStartOemDataReqParams);
10253
10254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10255 WDI_START_OEM_DATA_REQ, reqLen,
10256 &pSendBuffer, &usDataOffset, &usSendSize))||
10257 (usSendSize < (usDataOffset + reqLen)))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10260 "Unable to get send buffer in Start Oem Data req %x %x %x",
10261 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10262 WDI_ASSERT(0);
10263 return WDI_STATUS_E_FAILURE;
10264 }
10265
10266 //copying WDI OEM DATA REQ PARAMS to shared memory
10267 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10268
10269 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10270 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10271
10272 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10273 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10274
10275 /*-------------------------------------------------------------------------
10276 Send Start Request to HAL
10277 -------------------------------------------------------------------------*/
10278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10279 wdiOemDataRspCb, pEventData->pUserData,
10280 WDI_START_OEM_DATA_RESP);
10281}/*WDI_ProcessStartOemDataReq*/
10282#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010283
10284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010287
10288 @param pWDICtx: pointer to the WLAN DAL context
10289 pEventData: pointer to the event information structure
10290
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 @see
10292 @return Result of the function call
10293*/
10294WDI_Status
10295WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010296(
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ControlBlockType* pWDICtx,
10298 WDI_EventInfoType* pEventData
10299)
10300{
10301 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10302 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 tHalWlanHostResumeReqParam halResumeReqParams;
10307
10308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
10313 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10314 ( NULL == pEventData->pCBfnc ))
10315 {
10316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010317 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 }
10321
10322 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10323 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10324
10325 /*-----------------------------------------------------------------------
10326 Get message buffer
10327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10330 &pSendBuffer, &usDataOffset, &usSendSize))||
10331 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10332 {
10333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 }
10339
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010342
10343 wpalMemoryCopy( pSendBuffer+usDataOffset,
10344 &halResumeReqParams,
10345 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010346
10347 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349
10350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10354 wdiHostResumeRspCb, pEventData->pUserData,
10355 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010356}/*WDI_ProcessHostResumeReq*/
10357
10358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010361
10362 @param pWDICtx: pointer to the WLAN DAL context
10363 pEventData: pointer to the event information structure
10364
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 @see
10366 @return Result of the function call
10367*/
10368WDI_Status
10369WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010370(
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 WDI_ControlBlockType* pWDICtx,
10372 WDI_EventInfoType* pEventData
10373)
10374{
10375 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10376 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 wpt_uint16 usDataOffset = 0;
10379 wpt_uint16 usSendSize = 0;
10380 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10382
10383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 -------------------------------------------------------------------------*/
10386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10387 ( NULL == pEventData->pCBfnc ))
10388 {
10389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010390 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 }
10394
10395 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10396 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 /*-----------------------------------------------------------------------
10399 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 sizeof(halTxPerTrackingReqParam),
10404 &pSendBuffer, &usDataOffset, &usSendSize))||
10405 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10406 {
10407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10408 "Unable to get send buffer in set tx per tracking req %x %x %x",
10409 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010413
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10415 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10416 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10417 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010418
10419 wpalMemoryCopy( pSendBuffer+usDataOffset,
10420 &halTxPerTrackingReqParam,
10421 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010422
10423 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010425
10426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10430 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010431}/*WDI_ProcessSetTxPerTrackingReq*/
10432
10433/*=========================================================================
10434 Indications
10435=========================================================================*/
10436
10437/**
10438 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010439
10440 @param pWDICtx: pointer to the WLAN DAL context
10441 pEventData: pointer to the event information structure
10442
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 @see
10444 @return Result of the function call
10445*/
10446WDI_Status
10447WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010448(
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 WDI_ControlBlockType* pWDICtx,
10450 WDI_EventInfoType* pEventData
10451)
10452{
10453 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 wpt_uint16 usDataOffset = 0;
10456 wpt_uint16 usSendSize = 0;
10457 WDI_Status wdiStatus;
10458 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10460
10461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 -------------------------------------------------------------------------*/
10464 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10465 {
10466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010467 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 }
10471
10472 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10473
10474 /*-----------------------------------------------------------------------
10475 Get message buffer
10476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10478 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 sizeof(halWlanSuspendIndparams),
10480 &pSendBuffer, &usDataOffset, &usSendSize))||
10481 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10482 {
10483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10484 "Unable to get send buffer in Suspend Ind ");
10485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
10489 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10490 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10491
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010493 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10496 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010497
10498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 -------------------------------------------------------------------------*/
10501 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10506}/*WDI_ProcessHostSuspendInd*/
10507
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010508
10509
10510/**
10511 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10512
10513 @param pWDICtx: pointer to the WLAN DAL context
10514 pEventData: pointer to the event information structure
10515
10516 @see
10517 @return Result of the function call
10518*/
10519WDI_Status
10520WDI_ProcessTrafficStatsInd
10521(
10522 WDI_ControlBlockType* pWDICtx,
10523 WDI_EventInfoType* pEventData
10524)
10525{
10526 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10527 wpt_uint8* pSendBuffer = NULL;
10528 wpt_uint16 usDataOffset = 0;
10529 wpt_uint16 usSendSize = 0;
10530 WDI_Status wdiStatus;
10531 tStatsClassBIndParams* pStatsClassBIndParams;
10532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10533
10534 /*-------------------------------------------------------------------------
10535 Sanity check
10536 -------------------------------------------------------------------------*/
10537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10538 {
10539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10540 "%s: Invalid parameters in Traffic Stats ind",__func__);
10541 WDI_ASSERT(0);
10542 return WDI_STATUS_E_FAILURE;
10543 }
10544
10545 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10546
10547 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10550 "%s: Invalid parameters in Traffic Stats ind",__func__);
10551 WDI_ASSERT(0);
10552 return WDI_STATUS_E_FAILURE;
10553 }
10554
10555 /*-----------------------------------------------------------------------
10556 Get message buffer
10557 -----------------------------------------------------------------------*/
10558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10559 WDI_TRAFFIC_STATS_IND,
10560 sizeof(tStatsClassBIndParams),
10561 &pSendBuffer, &usDataOffset, &usSendSize))||
10562 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10563 {
10564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10565 "Unable to get send buffer in Traffic Stats Ind ");
10566 WDI_ASSERT(0);
10567 return WDI_STATUS_E_FAILURE;
10568 }
10569
10570 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10571
10572 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10573
10574 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10575 pTrafficStatsIndParams->pTrafficStats,
10576 pTrafficStatsIndParams->length);
10577
10578 /*-------------------------------------------------------------------------
10579 Send Suspend Request to HAL
10580 -------------------------------------------------------------------------*/
10581 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10582 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10583
10584 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10585 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10586}/*WDI_ProcessTrafficStatsInd*/
10587
Chet Lanctota96bb432013-03-18 10:26:30 -070010588#ifdef WLAN_FEATURE_11W
10589/**
10590 @brief Process Exclude Unencrypted Indications function (called
10591 when Main FSM allows it)
10592
10593 @param pWDICtx: pointer to the WLAN DAL context
10594 pEventData: pointer to the event information structure
10595
10596 @see
10597 @return Result of the function call
10598*/
10599WDI_Status
10600WDI_ProcessExcludeUnencryptInd
10601(
10602 WDI_ControlBlockType* pWDICtx,
10603 WDI_EventInfoType* pEventData
10604)
10605{
10606 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10607 wpt_uint8* pSendBuffer = NULL;
10608 wpt_uint16 usDataOffset = 0;
10609 wpt_uint16 usSendSize = 0;
10610 WDI_Status wdiStatus;
10611 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10613
10614 /*-------------------------------------------------------------------------
10615 Sanity check
10616 -------------------------------------------------------------------------*/
10617 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10618 {
10619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10620 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10621 WDI_ASSERT(0);
10622 return WDI_STATUS_E_FAILURE;
10623 }
10624
10625 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10626
10627 /*-----------------------------------------------------------------------
10628 Get message buffer
10629 -----------------------------------------------------------------------*/
10630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10631 WDI_EXCLUDE_UNENCRYPTED_IND,
10632 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10633 &pSendBuffer, &usDataOffset, &usSendSize))||
10634 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10635 {
10636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10637 "Unable to get send buffer in Exclude Unencrypted Ind ");
10638 WDI_ASSERT(0);
10639 return WDI_STATUS_E_FAILURE;
10640 }
10641
10642 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10643
10644 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10645
10646 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10647 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10648
10649 /*-------------------------------------------------------------------------
10650 Send Suspend Request to HAL
10651 -------------------------------------------------------------------------*/
10652 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10653 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10654
10655 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10656 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10657}/*WDI_ProcessExcludeUnencryptInd*/
10658#endif
10659
Jeff Johnson295189b2012-06-20 16:38:30 -070010660/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010662==========================================================================*/
10663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010666
10667 @param pWDICtx: pointer to the WLAN DAL context
10668 pEventData: pointer to the event information structure
10669
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 @see
10671 @return Result of the function call
10672*/
10673WDI_Status
10674WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010675(
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 WDI_ControlBlockType* pWDICtx,
10677 WDI_EventInfoType* pEventData
10678)
10679{
10680 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10681 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 wpt_uint16 usDataOffset = 0;
10684 wpt_uint16 usSendSize = 0;
10685 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10687
10688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 -------------------------------------------------------------------------*/
10691 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10692 ( NULL == pEventData->pCBfnc ))
10693 {
10694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 }
10699
10700 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10701 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10702 /*-----------------------------------------------------------------------
10703 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 sizeof(halSwitchChannelReq.switchChannelParams),
10708 &pSendBuffer, &usDataOffset, &usSendSize))||
10709 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10710 {
10711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10712 "Unable to get send buffer in channel switch req %x %x %x",
10713 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 }
10717
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720#ifndef WLAN_FEATURE_VOWIFI
10721 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10723#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10726
10727#ifdef WLAN_FEATURE_VOWIFI
10728 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10731 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10732 WDI_MAC_ADDR_LEN);
10733 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10734 pwdiSwitchChParams->wdiChInfo.macBSSId,
10735 WDI_MAC_ADDR_LEN);
10736#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 wpalMemoryCopy( pSendBuffer+usDataOffset,
10738 &halSwitchChannelReq.switchChannelParams,
10739 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010740
10741 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010743
10744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10748 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010749}/*WDI_ProcessChannelSwitchReq*/
10750
10751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010754
10755 @param pWDICtx: pointer to the WLAN DAL context
10756 pEventData: pointer to the event information structure
10757
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 @see
10759 @return Result of the function call
10760*/
10761WDI_Status
10762WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010763(
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_ControlBlockType* pWDICtx,
10765 WDI_EventInfoType* pEventData
10766)
10767{
10768 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10769 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 wpt_uint16 usDataOffset = 0;
10774 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 tConfigStaReqMsg halConfigStaReqMsg;
10778 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10780
10781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
10784 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10785 ( NULL == pEventData->pCBfnc ))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 }
10792
10793 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10794 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10795 /*-------------------------------------------------------------------------
10796 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 -------------------------------------------------------------------------*/
10799 wpalMutexAcquire(&pWDICtx->wptMutex);
10800
10801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10805 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10806 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010807
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10811 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10812 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010813
10814 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 }
10817
10818 /*------------------------------------------------------------------------
10819 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 ------------------------------------------------------------------------*/
10822 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10825 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10826 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010827
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 }
10832
10833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010834
10835 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10836#ifdef WLAN_FEATURE_11AC
10837 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010838 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 else
10840#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010841 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010842
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 /*-----------------------------------------------------------------------
10844 Get message buffer
10845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10847 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 {
10851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10852 "Unable to get send buffer in config sta req %x %x %x",
10853 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 }
10857
10858 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 &pwdiConfigSTAParams->wdiReqInfo);
10861
10862 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10863 {
10864 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 WDI_STATableFindStaidByAddr(pWDICtx,
10867 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 {
10870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10871 "This station does not exist in the WDI Station Table %d");
10872 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010873 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 }
10876 }
10877 else
10878 {
10879 /* Need to fill in the STA Index to invalid, since at this point we have not
10880 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010881 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 }
10883
10884 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010886
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 wpalMemoryCopy( pSendBuffer+usDataOffset,
10888 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010889 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
10891 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10895 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 sizeof(pWDICtx->wdiCachedConfigStaReq));
10897
10898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10902 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903}/*WDI_ProcessConfigStaReq*/
10904
10905
10906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010909
10910 @param pWDICtx: pointer to the WLAN DAL context
10911 pEventData: pointer to the event information structure
10912
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 @see
10914 @return Result of the function call
10915*/
10916WDI_Status
10917WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010918(
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 WDI_ControlBlockType* pWDICtx,
10920 WDI_EventInfoType* pEventData
10921)
10922{
10923 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10924 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 wpt_uint16 usDataOffset = 0;
10929 wpt_uint16 usSendSize = 0;
10930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10933
10934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 -------------------------------------------------------------------------*/
10937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10938 ( NULL == pEventData->pCBfnc ))
10939 {
10940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 }
10945
10946 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10947 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10948 /*-------------------------------------------------------------------------
10949 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 -------------------------------------------------------------------------*/
10952 wpalMutexAcquire(&pWDICtx->wptMutex);
10953
10954 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10958 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10959 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10965 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 }
10967 else
10968 {
10969 /*------------------------------------------------------------------------
10970 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 ------------------------------------------------------------------------*/
10973 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10976 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10977 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10978
10979 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 }
10983 }
10984 /* If the link is set to enter IDLE - the Session allocated for this BSS
10985 will be deleted on the Set Link State response coming from HAL
10986 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010988 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10989
10990 wpalMutexRelease(&pWDICtx->wptMutex);
10991 /*-----------------------------------------------------------------------
10992 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010995
10996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 sizeof(halLinkStateReqMsg),
10998 &pSendBuffer, &usDataOffset, &usSendSize))||
10999 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11000 {
11001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11002 "Unable to get send buffer in set bss key req %x %x %x",
11003 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 }
11007
11008 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11009 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11010
11011 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11012 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11013
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11016
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 wpalMemoryCopy( pSendBuffer+usDataOffset,
11018 &halLinkStateReqMsg,
11019 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011020
11021 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011023
11024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11028 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011029}/*WDI_ProcessSetLinkStateReq*/
11030
11031
11032/**
11033 @brief Process Get Stats Request function (called when Main FSM
11034 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011035
11036 @param pWDICtx: pointer to the WLAN DAL context
11037 pEventData: pointer to the event information structure
11038
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 @see
11040 @return Result of the function call
11041*/
11042WDI_Status
11043WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011044(
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 WDI_ControlBlockType* pWDICtx,
11046 WDI_EventInfoType* pEventData
11047)
11048{
11049 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11050 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 wpt_uint16 usDataOffset = 0;
11053 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 WDI_BSSSessionType* pBSSSes = NULL;
11056 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 tHalStatsReqMsg halStatsReqMsg;
11059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11060
11061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 -------------------------------------------------------------------------*/
11064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11065 ( NULL == pEventData->pCBfnc ) )
11066 {
11067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11074 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11075
11076 /*-------------------------------------------------------------------------
11077 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 -------------------------------------------------------------------------*/
11080 wpalMutexAcquire(&pWDICtx->wptMutex);
11081
11082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11086 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 &macBSSID))
11088 {
11089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11090 "This station does not exist in the WDI Station Table %d");
11091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 }
11094
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11096 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11099 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011101
11102 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 }
11105
11106 /*------------------------------------------------------------------------
11107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 ------------------------------------------------------------------------*/
11110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11113 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011115
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 }
11120
11121
11122 wpalMutexRelease(&pWDICtx->wptMutex);
11123
11124 /*-----------------------------------------------------------------------
11125 Get message buffer
11126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 sizeof(halStatsReqMsg.statsReqParams),
11129 &pSendBuffer, &usDataOffset, &usSendSize))||
11130 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11131 {
11132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11133 "Unable to get send buffer in set bss key req %x %x %x",
11134 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 }
11138
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011143 wpalMemoryCopy( pSendBuffer+usDataOffset,
11144 &halStatsReqMsg.statsReqParams,
11145 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011146
11147 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011149
11150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11154 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011155}/*WDI_ProcessGetStatsReq*/
11156
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011157#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11158/**
11159 @brief Process Get Roam Rssi Request function (called when Main FSM
11160 allows it)
11161
11162 @param pWDICtx: pointer to the WLAN DAL context
11163 pEventData: pointer to the event information structure
11164
11165 @see
11166 @return Result of the function call
11167*/
11168WDI_Status
11169WDI_ProcessGetRoamRssiReq
11170(
11171 WDI_ControlBlockType* pWDICtx,
11172 WDI_EventInfoType* pEventData
11173)
11174{
11175 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11176 WDI_GetStatsRspCb wdiGetStatsRspCb;
11177 wpt_uint8* pSendBuffer = NULL;
11178 wpt_uint16 usDataOffset = 0;
11179 wpt_uint16 usSendSize = 0;
11180 wpt_uint8 ucCurrentBSSSesIdx = 0;
11181 WDI_BSSSessionType* pBSSSes = NULL;
11182 wpt_macAddr macBSSID;
11183 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11184 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11186 /*-------------------------------------------------------------------------
11187 Sanity check
11188 -------------------------------------------------------------------------*/
11189 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11190 ( NULL == pEventData->pCBfnc ) )
11191 {
11192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11193 "%s: Invalid parameters", __func__);
11194 WDI_ASSERT(0);
11195 return WDI_STATUS_E_FAILURE;
11196 }
11197
11198 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11199 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11200
11201 /*-------------------------------------------------------------------------
11202 Check to see if we are in the middle of an association, if so queue, if
11203 not it means it is free to process request
11204 -------------------------------------------------------------------------*/
11205 wpalMutexAcquire(&pWDICtx->wptMutex);
11206
11207 /*------------------------------------------------------------------------
11208 Find the BSS for which the request is made
11209 ------------------------------------------------------------------------*/
11210 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11211 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11212 &macBSSID))
11213 {
11214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11215 "This station does not exist in the WDI Station Table %d");
11216 wpalMutexRelease(&pWDICtx->wptMutex);
11217 return WDI_STATUS_E_FAILURE;
11218 }
11219
11220 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11221 if ( NULL == pBSSSes )
11222 {
11223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11224 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11225 __func__, MAC_ADDR_ARRAY(macBSSID));
11226
11227 wpalMutexRelease(&pWDICtx->wptMutex);
11228 return WDI_STATUS_E_NOT_ALLOWED;
11229 }
11230
11231 /*------------------------------------------------------------------------
11232 Check if this BSS is being currently processed or queued,
11233 if queued - queue the new request as well
11234 ------------------------------------------------------------------------*/
11235 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11236 {
11237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11238 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11239 __func__, MAC_ADDR_ARRAY(macBSSID));
11240
11241 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11242 wpalMutexRelease(&pWDICtx->wptMutex);
11243 return wdiStatus;
11244 }
11245
11246 wpalMutexRelease(&pWDICtx->wptMutex);
11247
11248 /*-----------------------------------------------------------------------
11249 Get message buffer
11250 -----------------------------------------------------------------------*/
11251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11252 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11253 &pSendBuffer, &usDataOffset, &usSendSize))||
11254 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11255 {
11256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11257 "Unable to get send buffer in set bss key req %x %x %x",
11258 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11259 WDI_ASSERT(0);
11260 return WDI_STATUS_E_FAILURE;
11261 }
11262
11263 halRssiRoamReqMsg.roamRssiReqParams.staId =
11264 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11265 wpalMemoryCopy( pSendBuffer+usDataOffset,
11266 &halRssiRoamReqMsg.roamRssiReqParams,
11267 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11268
11269 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11270 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11271
11272 /*-------------------------------------------------------------------------
11273 Send Get STA Request to HAL
11274 -------------------------------------------------------------------------*/
11275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11276 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11277}/*WDI_ProcessGetRoamRssiReq*/
11278#endif
11279
Jeff Johnson295189b2012-06-20 16:38:30 -070011280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011283
11284 @param pWDICtx: pointer to the WLAN DAL context
11285 pEventData: pointer to the event information structure
11286
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 @see
11288 @return Result of the function call
11289*/
11290WDI_Status
11291WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011292(
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 WDI_ControlBlockType* pWDICtx,
11294 WDI_EventInfoType* pEventData
11295)
11296{
11297 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11298 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11299
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 wpt_uint16 usDataOffset = 0;
11302 wpt_uint16 usSendSize = 0;
11303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11304
11305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 -------------------------------------------------------------------------*/
11308 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11309 ( NULL == pEventData->pCBfnc))
11310 {
11311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 }
11316
11317 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11318 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11319
11320 /*-----------------------------------------------------------------------
11321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 -----------------------------------------------------------------------*/
11324
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11327 &pSendBuffer, &usDataOffset, &usSendSize))||
11328 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11329 {
11330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11331 "Unable to get send buffer in set bss key req %x %x %x",
11332 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 }
11336
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 wpalMemoryCopy( pSendBuffer+usDataOffset,
11338 &pwdiUpdateCfgParams->uConfigBufferLen,
11339 sizeof(wpt_uint32));
11340 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11341 pwdiUpdateCfgParams->pConfigBuffer,
11342 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011343
11344 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011346
11347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 -------------------------------------------------------------------------*/
11350
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11352 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011353
11354}/*WDI_ProcessUpdateCfgReq*/
11355
11356
11357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011360
11361 @param pWDICtx: pointer to the WLAN DAL context
11362 pEventData: pointer to the event information structure
11363
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 @see
11365 @return Result of the function call
11366*/
11367WDI_Status
11368WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011369(
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 WDI_ControlBlockType* pWDICtx,
11371 WDI_EventInfoType* pEventData
11372)
11373{
11374 WDI_AddBAReqParamsType* pwdiAddBAParams;
11375 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 WDI_BSSSessionType* pBSSSes = NULL;
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 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 wpt_macAddr macBSSID;
11383
11384 tAddBAReqMsg halAddBAReq;
11385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11386
11387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 -------------------------------------------------------------------------*/
11390 if (( NULL == pEventData ) ||
11391 ( NULL == pEventData->pEventData) ||
11392 ( NULL == pEventData->pCBfnc ))
11393 {
11394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 }
11399
11400 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11401 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11402
11403 /*-------------------------------------------------------------------------
11404 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 -------------------------------------------------------------------------*/
11407 wpalMutexAcquire(&pWDICtx->wptMutex);
11408
11409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11413 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 &macBSSID))
11415 {
11416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11417 "This station does not exist in the WDI Station Table %d");
11418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 }
11421
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11423 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11426 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11427 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011428
11429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 }
11432
11433 /*------------------------------------------------------------------------
11434 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 ------------------------------------------------------------------------*/
11437 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11438 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11440 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11441 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011442
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 }
11447
11448
11449 wpalMutexRelease(&pWDICtx->wptMutex);
11450 /*-----------------------------------------------------------------------
11451 Get message buffer
11452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 sizeof(halAddBAReq.addBAParams),
11455 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011456 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11458 {
11459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11460 "Unable to get send buffer in Add BA req %x %x %x",
11461 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 }
11465
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11468 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11469#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11472#endif
11473
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpalMemoryCopy( pSendBuffer+usDataOffset,
11475 &halAddBAReq.addBAParams,
11476 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011480
11481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11485 wdiAddBARspCb, pEventData->pUserData,
11486 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011487}/*WDI_ProcessAddBAReq*/
11488
11489
11490
11491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011494
11495 @param pWDICtx: pointer to the WLAN DAL context
11496 pEventData: pointer to the event information structure
11497
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 @see
11499 @return Result of the function call
11500*/
11501WDI_Status
11502WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011503(
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 WDI_ControlBlockType* pWDICtx,
11505 WDI_EventInfoType* pEventData
11506)
11507{
11508 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11509 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 wpt_uint16 usDataOffset = 0;
11514 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 wpt_uint16 index;
11517 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011518
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 tTriggerBAReqMsg halTriggerBAReq;
11520 tTriggerBaReqCandidate* halTriggerBACandidate;
11521 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11523
11524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 -------------------------------------------------------------------------*/
11527 if (( NULL == pEventData ) ||
11528 ( NULL == pEventData->pEventData ) ||
11529 ( NULL == pEventData->pCBfnc ))
11530 {
11531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 }
11536
11537 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11538 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11539 /*-------------------------------------------------------------------------
11540 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 -------------------------------------------------------------------------*/
11543 wpalMutexAcquire(&pWDICtx->wptMutex);
11544
11545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11549 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 &macBSSID))
11551 {
11552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11553 "This station does not exist in the WDI Station Table %d");
11554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 }
11557
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11563 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011564
11565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 }
11568
11569 /*------------------------------------------------------------------------
11570 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 ------------------------------------------------------------------------*/
11573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11577 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011578
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 }
11583
11584
11585 wpalMutexRelease(&pWDICtx->wptMutex);
11586 /*-----------------------------------------------------------------------
11587 Get message buffer
11588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11590 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11594 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11599 {
11600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11601 "Unable to get send buffer in Trigger BA req %x %x %x",
11602 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 }
11606
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11611
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 wpalMemoryCopy( pSendBuffer+usDataOffset,
11613 &halTriggerBAReq.triggerBAParams,
11614 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011615
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11618 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11619 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011620
11621 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 index++)
11623 {
11624 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11625 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11626 halTriggerBACandidate++;
11627 wdiTriggerBACandidate++;
11628 }
11629
11630 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
11633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11637 wdiTriggerBARspCb, pEventData->pUserData,
11638 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011639}/*WDI_ProcessTriggerBAReq*/
11640
11641
11642
11643/**
11644 @brief Process Update Beacon Params Request function (called when Main FSM
11645 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011646
11647 @param pWDICtx: pointer to the WLAN DAL context
11648 pEventData: pointer to the event information structure
11649
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 @see
11651 @return Result of the function call
11652*/
11653WDI_Status
11654WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011655(
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 WDI_ControlBlockType* pWDICtx,
11657 WDI_EventInfoType* pEventData
11658)
11659{
11660 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11661 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 wpt_uint16 usDataOffset = 0;
11664 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11667
11668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 -------------------------------------------------------------------------*/
11671 if (( NULL == pEventData ) ||
11672 ( NULL == pEventData->pEventData) ||
11673 ( NULL == pEventData->pCBfnc))
11674 {
11675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 }
11680
11681 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11682 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11683 /*-----------------------------------------------------------------------
11684 Get message buffer
11685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 sizeof(halUpdateBeaconParams),
11688 &pSendBuffer, &usDataOffset, &usSendSize))||
11689 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11690 {
11691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11692 "Unable to get send buffer in set bss key req %x %x %x",
11693 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 }
11697
11698 /*BSS Index of the BSS*/
11699 halUpdateBeaconParams.bssIdx =
11700 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11701 /*shortPreamble mode. HAL should update all the STA rates when it
11702 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11705 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11708 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011710 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11711
11712 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11725 halUpdateBeaconParams.fRIFSMode =
11726 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011728 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11729
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11731 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011732
11733 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735
11736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11740 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011741}/*WDI_ProcessUpdateBeaconParamsReq*/
11742
11743
11744
11745/**
11746 @brief Process Send Beacon template Request function (called when Main FSM
11747 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011748
11749 @param pWDICtx: pointer to the WLAN DAL context
11750 pEventData: pointer to the event information structure
11751
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 @see
11753 @return Result of the function call
11754*/
11755WDI_Status
11756WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011757(
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_ControlBlockType* pWDICtx,
11759 WDI_EventInfoType* pEventData
11760)
11761{
11762 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11763 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 wpt_uint16 usDataOffset = 0;
11766 wpt_uint16 usSendSize = 0;
11767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11768
11769 tSendBeaconReqMsg halSendBeaconReq;
11770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 -------------------------------------------------------------------------*/
11773 if (( NULL == pEventData ) ||
11774 ( NULL == pEventData->pEventData ) ||
11775 ( NULL == pEventData->pCBfnc ))
11776 {
11777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 }
11782
11783 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11784 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11785 /*-----------------------------------------------------------------------
11786 Get message buffer
11787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 sizeof(halSendBeaconReq.sendBeaconParam),
11790 &pSendBuffer, &usDataOffset, &usSendSize))||
11791 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11792 {
11793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11794 "Unable to get send buffer in send beacon req %x %x %x",
11795 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 }
11799
11800 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11801 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11802 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11805 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11806 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11807 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011810 /* usP2PIeOffset should be atleast greater than timIeOffset */
11811 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11812 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11813 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11814 {
11815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11816 "Invalid usP2PIeOffset %hu",
11817 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11818 WDI_ASSERT(0);
11819 return WDI_STATUS_E_FAILURE;
11820 }
11821
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 wpalMemoryCopy( pSendBuffer+usDataOffset,
11826 &halSendBeaconReq.sendBeaconParam,
11827 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011828
11829 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011831
11832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11836 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011837}/*WDI_ProcessSendBeaconParamsReq*/
11838
11839/**
11840 @brief Process Update Beacon Params Request function (called when Main FSM
11841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011842
11843 @param pWDICtx: pointer to the WLAN DAL context
11844 pEventData: pointer to the event information structure
11845
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 @see
11847 @return Result of the function call
11848*/
11849WDI_Status
11850WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011851(
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 WDI_ControlBlockType* pWDICtx,
11853 WDI_EventInfoType* pEventData
11854)
11855{
11856 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11857 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 wpt_uint16 usDataOffset = 0;
11860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11863
11864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 -------------------------------------------------------------------------*/
11867 if (( NULL == pEventData ) ||
11868 ( NULL == pEventData->pEventData) ||
11869 ( NULL == pEventData->pCBfnc))
11870 {
11871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 }
11876
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11881 /*-----------------------------------------------------------------------
11882 Get message buffer
11883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 sizeof(halUpdateProbeRspTmplParams),
11886 &pSendBuffer, &usDataOffset, &usSendSize))||
11887 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11888 {
11889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11890 "Unable to get send buffer in set bss key req %x %x %x",
11891 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 }
11895
11896 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 WDI_MAC_ADDR_LEN);
11899
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11902
11903 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11904 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011906
11907
11908 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11909 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11910 WDI_PROBE_REQ_BITMAP_IE_LEN);
11911
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 wpalMemoryCopy( pSendBuffer+usDataOffset,
11913 &halUpdateProbeRspTmplParams,
11914 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011915
11916 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011918
11919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11923 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11924 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011925}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11926
11927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011930
11931 @param pWDICtx: pointer to the WLAN DAL context
11932 pEventData: pointer to the event information structure
11933
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 @see
11935 @return Result of the function call
11936*/
11937WDI_Status
11938WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011939(
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 WDI_ControlBlockType* pWDICtx,
11941 WDI_EventInfoType* pEventData
11942)
11943{
11944
11945 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11946 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11947
11948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 -------------------------------------------------------------------------*/
11951 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11956 {
11957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 }
11962
11963 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11966
11967 /*cache the wdi nv request message here if the the first fragment
11968 * To issue the request to HAL for the next fragment */
11969 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11972 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11974
11975 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11976 pWDICtx->pRspCBUserData = pEventData->pUserData;
11977 }
11978
11979 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11980}
11981
11982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011985
11986 @param pWDICtx: pointer to the WLAN DAL context
11987 pEventData: pointer to the event information structure
11988
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 @see
11990 @return Result of the function call
11991*/
11992WDI_Status WDI_ProcessSetMaxTxPowerReq
11993(
11994 WDI_ControlBlockType* pWDICtx,
11995 WDI_EventInfoType* pEventData
11996)
11997{
11998 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11999 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 wpt_uint16 usDataOffset = 0;
12002 wpt_uint16 usSendSize = 0;
12003 tSetMaxTxPwrReq halSetMaxTxPower;
12004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12005
12006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 -------------------------------------------------------------------------*/
12009 if (( NULL == pEventData ) ||
12010 ( NULL == pEventData->pEventData ) ||
12011 ( NULL == pEventData->pCBfnc ))
12012 {
12013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12022
12023 /*-----------------------------------------------------------------------
12024 Get message buffer
12025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012026if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12028 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012030)))
12031 {
12032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12033 "Unable to get Set Max Tx Power req %x %x %x",
12034 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 }
12038
12039 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12040 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12041 WDI_MAC_ADDR_LEN);
12042
12043 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12044 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12045 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012048
12049 wpalMemoryCopy( pSendBuffer+usDataOffset,
12050 &halSetMaxTxPower.setMaxTxPwrParams,
12051 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012052
12053 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055
12056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12060 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12061 WDI_SET_MAX_TX_POWER_RESP);
12062
Jeff Johnson295189b2012-06-20 16:38:30 -070012063}
12064
schangd82195a2013-03-13 18:41:24 -070012065/**
12066 @brief Process Set Tx Power Request function (called when Main
12067 FSM allows it)
12068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
12072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status WDI_ProcessSetTxPowerReq
12076(
12077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12082 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12083 wpt_uint8* pSendBuffer = NULL;
12084 wpt_uint16 usDataOffset = 0;
12085 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012086 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
12090 Sanity check
12091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) ||
12093 ( NULL == pEventData->pEventData ) ||
12094 ( NULL == pEventData->pCBfnc ))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12097 "%s: Invalid parameters", __func__);
12098 WDI_ASSERT(0);
12099 return WDI_STATUS_E_FAILURE;
12100 }
12101
12102 pwdiSetTxPowerParams =
12103 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12104 wdiSetTxPowerRspCb =
12105 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12106
12107 /*-----------------------------------------------------------------------
12108 Get message buffer
12109 -----------------------------------------------------------------------*/
12110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12111 sizeof(tSetTxPwrReqParams),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12114 )))
12115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12117 "Unable to get Set Max Tx Power req %x %x %x",
12118 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12119 WDI_ASSERT(0);
12120 return WDI_STATUS_E_FAILURE;
12121 }
12122
Leo Changa37e2a92013-03-25 17:39:58 -070012123 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12124 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12125 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012126
12127 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12128 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12129
12130 /*-------------------------------------------------------------------------
12131 Send Set Tx Power Request to HAL
12132 -------------------------------------------------------------------------*/
12133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12134 wdiSetTxPowerRspCb, pEventData->pUserData,
12135 WDI_SET_TX_POWER_RESP);
12136}
Jeff Johnson295189b2012-06-20 16:38:30 -070012137
12138/**
12139 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12140 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012141
12142 @param pWDICtx: pointer to the WLAN DAL context
12143 pEventData: pointer to the event information structure
12144
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 @see
12146 @return Result of the function call
12147*/
12148WDI_Status
12149WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012150(
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 WDI_ControlBlockType* pWDICtx,
12152 WDI_EventInfoType* pEventData
12153)
12154{
12155 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12156 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 wpt_uint16 usDataOffset = 0;
12159 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12162
12163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 -------------------------------------------------------------------------*/
12166 if (( NULL == pEventData ) ||
12167 ( NULL == pEventData->pEventData) ||
12168 ( NULL == pEventData->pCBfnc))
12169 {
12170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 }
12175
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12180 /*-----------------------------------------------------------------------
12181 Get message buffer
12182 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12184 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 sizeof(halSetP2PGONOAParams),
12186 &pSendBuffer, &usDataOffset, &usSendSize))||
12187 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12188 {
12189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12190 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12191 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 }
12195
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12200 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012201 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12209
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 wpalMemoryCopy( pSendBuffer+usDataOffset,
12211 &halSetP2PGONOAParams,
12212 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012213
12214 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012216
12217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12221 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12222 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012223}/*WDI_ProcessP2PGONOAReq*/
12224
Jeff Johnson295189b2012-06-20 16:38:30 -070012225
12226
12227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 @param None
12231
12232 @see
12233 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012234*/
12235void
12236WDI_SetPowerStateCb
12237(
12238 wpt_status status,
12239 unsigned int dxePhyAddr,
12240 void *pContext
12241)
12242{
12243 wpt_status wptStatus;
12244 WDI_ControlBlockType *pCB = NULL;
12245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12246 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12247 {
12248 //it shouldn't happen, put an error msg
12249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 /*
12251 * Trigger the event to bring the Enter BMPS req function to come
12252 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012253*/
12254 if( NULL != pContext )
12255 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 }
12258 else
12259 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 pCB = &gWDICb;
12262 }
12263 pCB->dxePhyAddr = dxePhyAddr;
12264 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12265 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12266 {
12267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12268 "Failed to set an event");
12269
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 }
12272 return;
12273}
12274
12275
12276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012279
12280 @param pWDICtx: pointer to the WLAN DAL context
12281 pEventData: pointer to the event information structure
12282
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 @see
12284 @return Result of the function call
12285*/
12286WDI_Status
12287WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012288(
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 WDI_ControlBlockType* pWDICtx,
12290 WDI_EventInfoType* pEventData
12291)
12292{
Jeff Johnson43971f52012-07-17 12:26:56 -070012293 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 wpt_uint16 usDataOffset = 0;
12297 wpt_uint16 usSendSize = 0;
12298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12299
12300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
12303 if (( NULL == pEventData ) ||
12304 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12305 {
12306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012309 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 }
12311
12312 /*-----------------------------------------------------------------------
12313 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 0,
12318 &pSendBuffer, &usDataOffset, &usSendSize))||
12319 ( usSendSize < (usDataOffset )))
12320 {
12321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12322 "Unable to get send buffer in Enter IMPS req %x %x",
12323 pEventData, wdiEnterImpsRspCb);
12324 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012325 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 }
12327
12328 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012329 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 {
12332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12333 "WDI Init failed to reset an event");
12334
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012336 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 }
12338
12339 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012340 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12341 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12343 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12344 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012345 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012346 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012347
12348 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012351 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12352 WDI_SET_POWER_STATE_TIMEOUT);
12353 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 {
12355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12356 "WDI Init failed to wait on an event");
12357
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012359 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 }
12361
12362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12366 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012367
12368fail:
12369 // Release the message buffer so we don't leak
12370 wpalMemoryFree(pSendBuffer);
12371
12372failRequest:
12373 //WDA should have failure check to avoid the memory leak
12374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375}/*WDI_ProcessEnterImpsReq*/
12376
12377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012380
12381 @param pWDICtx: pointer to the WLAN DAL context
12382 pEventData: pointer to the event information structure
12383
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 @see
12385 @return Result of the function call
12386*/
12387WDI_Status
12388WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012389(
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 WDI_ControlBlockType* pWDICtx,
12391 WDI_EventInfoType* pEventData
12392)
12393{
12394 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 wpt_uint16 usDataOffset = 0;
12397 wpt_uint16 usSendSize = 0;
12398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12399
12400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 -------------------------------------------------------------------------*/
12403 if (( NULL == pEventData ) ||
12404 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12405 {
12406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 }
12411
12412 /*-----------------------------------------------------------------------
12413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 0,
12418 &pSendBuffer, &usDataOffset, &usSendSize))||
12419 ( usSendSize < (usDataOffset )))
12420 {
12421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12422 "Unable to get send buffer in Exit IMPS req %x %x",
12423 pEventData, wdiExitImpsRspCb);
12424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
12428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12432 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012433}/*WDI_ProcessExitImpsReq*/
12434
12435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012438
12439 @param pWDICtx: pointer to the WLAN DAL context
12440 pEventData: pointer to the event information structure
12441
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 @see
12443 @return Result of the function call
12444*/
12445WDI_Status
12446WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012447(
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ControlBlockType* pWDICtx,
12449 WDI_EventInfoType* pEventData
12450)
12451{
12452 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12453 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 wpt_uint16 usDataOffset = 0;
12456 wpt_uint16 usSendSize = 0;
12457 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012458 wpt_status wptStatus;
12459
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12461
12462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 -------------------------------------------------------------------------*/
12465 if (( NULL == pEventData ) ||
12466 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12467 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12468 {
12469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012472 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 }
12474
12475 /*-----------------------------------------------------------------------
12476 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 sizeof(enterBmpsReq),
12481 &pSendBuffer, &usDataOffset, &usSendSize))||
12482 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12483 {
12484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12485 "Unable to get send buffer in Enter BMPS req %x %x %x",
12486 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12487 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012488 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 }
12490
12491 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012492 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12493 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 {
12495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12496 "WDI Init failed to reset an event");
12497
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012499 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 }
12501
12502 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012503 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12504 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12505 {
12506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12507 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12508 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012509 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012510 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012511
12512/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012515 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12516 WDI_SET_POWER_STATE_TIMEOUT);
12517 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 {
12519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12520 "WDI Init failed to wait on an event");
12521
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012523 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 }
12525
12526 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12527
12528 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12529 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12530 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12531 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12532
12533 // For CCX and 11R Roaming
12534 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12535 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12536 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12537
12538 wpalMemoryCopy( pSendBuffer+usDataOffset,
12539 &enterBmpsReq,
12540 sizeof(enterBmpsReq));
12541
12542 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544
12545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12549 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012550
12551fail:
12552 // Release the message buffer so we don't leak
12553 wpalMemoryFree(pSendBuffer);
12554
12555failRequest:
12556 //WDA should have failure check to avoid the memory leak
12557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012558}/*WDI_ProcessEnterBmpsReq*/
12559
12560/**
12561 @brief Process Exit BMPS Request function (called when Main FSM
12562 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012563
12564 @param pWDICtx: pointer to the WLAN DAL context
12565 pEventData: pointer to the event information structure
12566
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 @see
12568 @return Result of the function call
12569*/
12570WDI_Status
12571WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012572(
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 WDI_ControlBlockType* pWDICtx,
12574 WDI_EventInfoType* pEventData
12575)
12576{
12577 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12578 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 wpt_uint16 usDataOffset = 0;
12581 wpt_uint16 usSendSize = 0;
12582 tHalExitBmpsReqParams exitBmpsReq;
12583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12584
12585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 -------------------------------------------------------------------------*/
12588 if (( NULL == pEventData ) ||
12589 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12590 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12591 {
12592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 }
12597
12598 /*-----------------------------------------------------------------------
12599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 sizeof(exitBmpsReq),
12604 &pSendBuffer, &usDataOffset, &usSendSize))||
12605 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12606 {
12607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12608 "Unable to get send buffer in Exit BMPS req %x %x %x",
12609 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 }
12613 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12614
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12616
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 wpalMemoryCopy( pSendBuffer+usDataOffset,
12618 &exitBmpsReq,
12619 sizeof(exitBmpsReq));
12620
12621 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
12624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12628 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012629}/*WDI_ProcessExitBmpsReq*/
12630
12631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012634
12635 @param pWDICtx: pointer to the WLAN DAL context
12636 pEventData: pointer to the event information structure
12637
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 @see
12639 @return Result of the function call
12640*/
12641WDI_Status
12642WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012643(
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 WDI_ControlBlockType* pWDICtx,
12645 WDI_EventInfoType* pEventData
12646)
12647{
12648 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12649 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 wpt_uint16 usDataOffset = 0;
12652 wpt_uint16 usSendSize = 0;
12653 tUapsdReqParams enterUapsdReq;
12654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12655
12656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 -------------------------------------------------------------------------*/
12659 if (( NULL == pEventData ) ||
12660 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12661 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12662 {
12663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 }
12668
12669 /*-----------------------------------------------------------------------
12670 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 sizeof(enterUapsdReq),
12675 &pSendBuffer, &usDataOffset, &usSendSize))||
12676 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12677 {
12678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12680 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 }
12684
12685 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12686 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12687 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12688 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12689 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12690 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12691 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12692 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012694
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 wpalMemoryCopy( pSendBuffer+usDataOffset,
12696 &enterUapsdReq,
12697 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012698
12699 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012701
12702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12706 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012707}/*WDI_ProcessEnterUapsdReq*/
12708
12709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012712
12713 @param pWDICtx: pointer to the WLAN DAL context
12714 pEventData: pointer to the event information structure
12715
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 @see
12717 @return Result of the function call
12718*/
12719WDI_Status
12720WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012721(
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 WDI_ControlBlockType* pWDICtx,
12723 WDI_EventInfoType* pEventData
12724)
12725{
12726 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 wpt_uint16 usDataOffset = 0;
12729 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012730 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12731 wpt_uint8 bssIdx = 0;
12732
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12734
12735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -------------------------------------------------------------------------*/
12738 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012739 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12741 {
12742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 }
12747
12748 /*-----------------------------------------------------------------------
12749 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012753 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012755 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 {
12757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12758 "Unable to get send buffer in Exit UAPSD req %x %x",
12759 pEventData, wdiExitUapsdRspCb);
12760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 }
12763
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012764 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12765
12766 wpalMemoryCopy( pSendBuffer+usDataOffset,
12767 &bssIdx,
12768 sizeof(wpt_uint8));
12769
12770 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12771 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12777 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012778}/*WDI_ProcessExitUapsdReq*/
12779
12780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012783
12784 @param pWDICtx: pointer to the WLAN DAL context
12785 pEventData: pointer to the event information structure
12786
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 @see
12788 @return Result of the function call
12789*/
12790WDI_Status
12791WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012792(
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 WDI_ControlBlockType* pWDICtx,
12794 WDI_EventInfoType* pEventData
12795)
12796{
12797 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12798 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 wpt_uint16 usDataOffset = 0;
12801 wpt_uint16 usSendSize = 0;
12802 tUapsdInfo uapsdAcParamsReq;
12803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12804
12805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
12808 if (( NULL == pEventData ) ||
12809 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12810 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12811 {
12812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 }
12817
12818 /*-----------------------------------------------------------------------
12819 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 sizeof(uapsdAcParamsReq),
12824 &pSendBuffer, &usDataOffset, &usSendSize))||
12825 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12826 {
12827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12828 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12829 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 }
12833
12834 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12835 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12836 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12837 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12838 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12839 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12840
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 wpalMemoryCopy( pSendBuffer+usDataOffset,
12842 &uapsdAcParamsReq,
12843 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012844
12845 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012847
12848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12852 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012853}/*WDI_ProcessSetUapsdAcParamsReq*/
12854
12855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012858
12859 @param pWDICtx: pointer to the WLAN DAL context
12860 pEventData: pointer to the event information structure
12861
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 @see
12863 @return Result of the function call
12864*/
12865WDI_Status
12866WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012867(
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 WDI_ControlBlockType* pWDICtx,
12869 WDI_EventInfoType* pEventData
12870)
12871{
12872 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12873 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 wpt_uint16 usDataOffset = 0;
12876 wpt_uint16 usSendSize = 0;
12877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12878
12879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 -------------------------------------------------------------------------*/
12882 if (( NULL == pEventData ) ||
12883 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12884 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12885 {
12886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 }
12891
12892 /*-----------------------------------------------------------------------
12893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12898 &pSendBuffer, &usDataOffset, &usSendSize))||
12899 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12900 {
12901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12902 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12903 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 }
12907
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 wpalMemoryCopy( pSendBuffer+usDataOffset,
12909 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12910 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
12912 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012914
12915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12919 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012920}/*WDI_ProcessUpdateUapsdParamsReq*/
12921
12922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 @brief Process Configure RXP filter 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_ProcessConfigureRxpFilterReq
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_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12940 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = 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 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12945
12946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12947
12948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) ||
12952 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12953 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 }
12960
12961 /*-----------------------------------------------------------------------
12962 Get message buffer
12963 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 sizeof(halRxpFilterParams),
12966 &pSendBuffer, &usDataOffset, &usSendSize))||
12967 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12968 {
12969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12970 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12971 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 }
12975
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012978 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12980
Jeff Johnsone7245742012-09-05 17:12:55 -070012981 wpalMemoryCopy( pSendBuffer+usDataOffset,
12982 &halRxpFilterParams,
12983 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012984
12985 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012987
12988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12992 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012993}/*WDI_ProcessConfigureRxpFilterReq*/
12994
12995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012998
12999 @param pWDICtx: pointer to the WLAN DAL context
13000 pEventData: pointer to the event information structure
13001
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 @see
13003 @return Result of the function call
13004*/
13005WDI_Status
13006WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013007(
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 WDI_ControlBlockType* pWDICtx,
13009 WDI_EventInfoType* pEventData
13010)
13011{
13012 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13013 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 wpt_uint16 usDataOffset = 0;
13016 wpt_uint16 usSendSize = 0;
13017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13018
13019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 -------------------------------------------------------------------------*/
13022 if (( NULL == pEventData ) ||
13023 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13024 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13025 {
13026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 }
13031
13032 /*-----------------------------------------------------------------------
13033 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13038 &pSendBuffer, &usDataOffset, &usSendSize))||
13039 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13040 {
13041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13042 "Unable to get send buffer in Set beacon filter req %x %x %x",
13043 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 }
13047
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 wpalMemoryCopy( pSendBuffer+usDataOffset,
13049 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13050 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13051 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13052 &pwdiBeaconFilterParams->aFilters[0],
13053 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013054
13055 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057
13058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13062 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063}/*WDI_ProcessSetBeaconFilterReq*/
13064
13065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013068
13069 @param pWDICtx: pointer to the WLAN DAL context
13070 pEventData: pointer to the event information structure
13071
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 @see
13073 @return Result of the function call
13074*/
13075WDI_Status
13076WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013077(
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 WDI_ControlBlockType* pWDICtx,
13079 WDI_EventInfoType* pEventData
13080)
13081{
13082 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13083 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 wpt_uint16 usDataOffset = 0;
13086 wpt_uint16 usSendSize = 0;
13087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13088
13089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 -------------------------------------------------------------------------*/
13092 if (( NULL == pEventData ) ||
13093 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13094 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13095 {
13096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 }
13101
13102 /*-----------------------------------------------------------------------
13103 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13108 &pSendBuffer, &usDataOffset, &usSendSize))||
13109 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13110 {
13111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13112 "Unable to get send buffer in remove beacon filter req %x %x %x",
13113 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 wpalMemoryCopy( pSendBuffer+usDataOffset,
13119 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13120 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013121
13122 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013124
13125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13129 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013130}
13131
13132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013135
13136 @param pWDICtx: pointer to the WLAN DAL context
13137 pEventData: pointer to the event information structure
13138
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 @see
13140 @return Result of the function call
13141*/
13142WDI_Status
13143WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013144(
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 WDI_ControlBlockType* pWDICtx,
13146 WDI_EventInfoType* pEventData
13147)
13148{
13149 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13150 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 wpt_uint16 usDataOffset = 0;
13153 wpt_uint16 usSendSize = 0;
13154 tHalRSSIThresholds rssiThresholdsReq;
13155 WDI_Status ret_status = 0;
13156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13157
13158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 -------------------------------------------------------------------------*/
13161 if (( NULL == pEventData ) ||
13162 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13163 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13164 {
13165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 }
13170
13171 /*-----------------------------------------------------------------------
13172 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 sizeof(rssiThresholdsReq),
13177 &pSendBuffer, &usDataOffset, &usSendSize))||
13178 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13179 {
13180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13181 "Unable to get send buffer in remove beacon filter req %x %x %x",
13182 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 }
13186
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13207
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 wpalMemoryCopy( pSendBuffer+usDataOffset,
13209 &rssiThresholdsReq,
13210 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013211
13212 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214
13215 /*-------------------------------------------------------------------------
13216 Send Set threshold req to HAL
13217 -------------------------------------------------------------------------*/
13218 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13219 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13220 {
13221 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13222 // req. Then as a result of processing the threshold cross ind, we trigger
13223 // a Set threshold req, then we need to indicate to WDI that it needs to
13224 // go to busy state as a result of the indication as we sent a req in the
13225 // same WDI context.
13226 // Hence expected state transition is to busy.
13227 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13228 }
13229
13230 return ret_status;
13231}
13232
13233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 when Main FSM 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_ProcessHostOffloadReq
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_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13251 WDI_HostOffloadCb wdiHostOffloadCb = 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;
13255 tHalHostOffloadReq hostOffloadParams;
13256 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013257 wpt_uint8 ucCurrentBSSSesIdx = 0;
13258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013259
13260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13261
13262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 -------------------------------------------------------------------------*/
13265 if (( NULL == pEventData ) ||
13266 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13267 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13268 {
13269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013272 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 }
13274
13275 /*-----------------------------------------------------------------------
13276 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13281 &pSendBuffer, &usDataOffset, &usSendSize))||
13282 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13283 {
13284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13285 "Unable to get send buffer in host offload req %x %x %x",
13286 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13287 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013288 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 }
13290
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013291 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13292 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13293 &pBSSSes);
13294 if ( NULL == pBSSSes )
13295 {
13296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013297 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013298 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013299 }
13300
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13302 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013303
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13305 {
13306 // ARP Offload
13307 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13308 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13309 4);
13310 }
13311 else
13312 {
13313 // NS Offload
13314 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13315 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13316 16);
13317
13318#ifdef WLAN_NS_OFFLOAD
13319 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13320 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13321 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13322 16);
13323 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13324 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13325 16);
13326 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13327 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13328 16);
13329 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13330 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13331 16);
13332 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13333 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13334 6);
13335 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13336 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13337 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338
Jeff Johnson295189b2012-06-20 16:38:30 -070013339#endif // WLAN_NS_OFFLOAD
13340 }
13341
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013342 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13343
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 // copy hostOffloadParams into pSendBuffer
13345 wpalMemoryCopy( pSendBuffer+usDataOffset,
13346 &hostOffloadParams,
13347 sizeof(hostOffloadParams));
13348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013349 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013351 // copy nsOffloadParams into pSendBuffer
13352 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 &nsOffloadParams,
13354 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013355 }
13356 else
13357 {
13358#ifdef WLAN_NS_OFFLOAD
13359 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13360 {
13361 // copy nsOffloadParams into pSendBuffer
13362 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13363 &nsOffloadParams,
13364 sizeof(nsOffloadParams));
13365 }
13366#endif
13367 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013368
13369 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013371
13372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13376 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013377
13378fail:
13379 // Release the message buffer so we don't leak
13380 wpalMemoryFree(pSendBuffer);
13381
13382failRequest:
13383 //WDA should have failure check to avoid the memory leak
13384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013385}/*WDI_ProcessHostOffloadReq*/
13386
13387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013390
13391 @param pWDICtx: pointer to the WLAN DAL context
13392 pEventData: pointer to the event information structure
13393
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 @see
13395 @return Result of the function call
13396*/
13397WDI_Status
13398WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013399(
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 WDI_ControlBlockType* pWDICtx,
13401 WDI_EventInfoType* pEventData
13402)
13403{
13404 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13405 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 wpt_uint16 usDataOffset = 0;
13408 wpt_uint16 usSendSize = 0;
13409 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013410 wpt_uint8 ucCurrentBSSSesIdx = 0;
13411 WDI_BSSSessionType* pBSSSes = NULL;
13412
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13414
13415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 -------------------------------------------------------------------------*/
13418 if (( NULL == pEventData ) ||
13419 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13420 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13421 {
13422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13423 "Invalid parameters in Keep Alive req");
13424 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013425 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 }
13427
13428 /*-----------------------------------------------------------------------
13429 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 sizeof(keepAliveReq),
13434 &pSendBuffer, &usDataOffset, &usSendSize))||
13435 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13438 "Unable to get send buffer in keep alive req %x %x %x",
13439 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13440 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013441 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 }
13443
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013444 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13445 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13446 &pBSSSes);
13447 if ( NULL == pBSSSes )
13448 {
13449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013450 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013451 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013452 }
13453
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13455 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13456
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013457 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013458
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13460 {
13461 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13462 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13463 HAL_IPV4_ADDR_LEN);
13464 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13465 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 wpalMemoryCopy(keepAliveReq.destMacAddr,
13468 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13469 HAL_MAC_ADDR_LEN);
13470 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013471
13472 wpalMemoryCopy( pSendBuffer+usDataOffset,
13473 &keepAliveReq,
13474 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013475
13476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13477 "Process keep alive req %d",sizeof(keepAliveReq));
13478
13479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13480 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13481
13482 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
13485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13486 "Sending keep alive req to HAL");
13487
13488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13492 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013493
13494fail:
13495 // Release the message buffer so we don't leak
13496 wpalMemoryFree(pSendBuffer);
13497
13498failRequest:
13499 //WDA should have failure check to avoid the memory leak
13500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501}/*WDI_ProcessKeepAliveReq*/
13502
13503
13504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013507
13508 @param pWDICtx: pointer to the WLAN DAL context
13509 pEventData: pointer to the event information structure
13510
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 @see
13512 @return Result of the function call
13513*/
13514WDI_Status
13515WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013516(
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 WDI_ControlBlockType* pWDICtx,
13518 WDI_EventInfoType* pEventData
13519)
13520{
13521 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13522 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 wpt_uint16 usDataOffset = 0;
13525 wpt_uint16 usSendSize = 0;
13526 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013527 wpt_uint8 ucCurrentBSSSesIdx = 0;
13528 WDI_BSSSessionType* pBSSSes = NULL;
13529
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13531
13532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 -------------------------------------------------------------------------*/
13535 if (( NULL == pEventData ) ||
13536 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13537 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13538 {
13539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013542 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 }
13544
13545 /*-----------------------------------------------------------------------
13546 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 sizeof(wowlAddBcPtrnReq),
13551 &pSendBuffer, &usDataOffset, &usSendSize))||
13552 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13553 {
13554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13555 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13556 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13557 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013558 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 }
13560
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013561 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13562 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13563 &pBSSSes);
13564 if ( NULL == pBSSSes )
13565 {
13566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013567 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013568 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013569 }
13570
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13579
13580 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13581 {
13582 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13583 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13584 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13585 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13586 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13587 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13588 }
13589 else
13590 {
13591 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13592 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13593 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13594 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13595 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13596 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13597
13598 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13599 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13600 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13601 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13602 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13603 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13604 }
13605
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013606 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13607
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 wpalMemoryCopy( pSendBuffer+usDataOffset,
13609 &wowlAddBcPtrnReq,
13610 sizeof(wowlAddBcPtrnReq));
13611
13612 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614
13615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13619 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013620fail:
13621 // Release the message buffer so we don't leak
13622 wpalMemoryFree(pSendBuffer);
13623
13624failRequest:
13625 //WDA should have failure check to avoid the memory leak
13626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013627}/*WDI_ProcessWowlAddBcPtrnReq*/
13628
13629/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013632
13633 @param pWDICtx: pointer to the WLAN DAL context
13634 pEventData: pointer to the event information structure
13635
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 @see
13637 @return Result of the function call
13638*/
13639WDI_Status
13640WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013641(
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 WDI_ControlBlockType* pWDICtx,
13643 WDI_EventInfoType* pEventData
13644)
13645{
13646 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13647 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 wpt_uint16 usDataOffset = 0;
13650 wpt_uint16 usSendSize = 0;
13651 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013652 wpt_uint8 ucCurrentBSSSesIdx = 0;
13653 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13655
13656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 -------------------------------------------------------------------------*/
13659 if (( NULL == pEventData ) ||
13660 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13661 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13662 {
13663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013666 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 }
13668
13669 /*-----------------------------------------------------------------------
13670 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 sizeof(wowlDelBcPtrnReq),
13675 &pSendBuffer, &usDataOffset, &usSendSize))||
13676 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13677 {
13678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13679 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13680 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13681 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013682 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 }
13684
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13686 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13687 &pBSSSes);
13688 if ( NULL == pBSSSes )
13689 {
13690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013691 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013692 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013693 }
13694
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013697
13698 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13699
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 wpalMemoryCopy( pSendBuffer+usDataOffset,
13701 &wowlDelBcPtrnReq,
13702 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013703
13704 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706
13707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13711 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013712
13713fail:
13714 // Release the message buffer so we don't leak
13715 wpalMemoryFree(pSendBuffer);
13716
13717failRequest:
13718 //WDA should have failure check to avoid the memory leak
13719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013720}/*WDI_ProcessWowlDelBcPtrnReq*/
13721
13722/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013725
13726 @param pWDICtx: pointer to the WLAN DAL context
13727 pEventData: pointer to the event information structure
13728
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 @see
13730 @return Result of the function call
13731*/
13732WDI_Status
13733WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013734(
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 WDI_ControlBlockType* pWDICtx,
13736 WDI_EventInfoType* pEventData
13737)
13738{
13739 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13740 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 wpt_uint16 usDataOffset = 0;
13743 wpt_uint16 usSendSize = 0;
13744 tHalWowlEnterParams wowlEnterReq;
13745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13746
13747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 -------------------------------------------------------------------------*/
13750 if (( NULL == pEventData ) ||
13751 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13752 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13753 {
13754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 }
13759
13760 /*-----------------------------------------------------------------------
13761 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 sizeof(wowlEnterReq),
13766 &pSendBuffer, &usDataOffset, &usSendSize))||
13767 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13768 {
13769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13770 "Unable to get send buffer in Wowl enter req %x %x %x",
13771 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 }
13775
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013784 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13792
13793#ifdef WLAN_WAKEUP_EVENTS
13794 wowlEnterReq.ucWoWEAPIDRequestEnable =
13795 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13796
13797 wowlEnterReq.ucWoWEAPOL4WayEnable =
13798 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13799
13800 wowlEnterReq.ucWowNetScanOffloadMatch =
13801 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13802
13803 wowlEnterReq.ucWowGTKRekeyError =
13804 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13805
13806 wowlEnterReq.ucWoWBSSConnLoss =
13807 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13808#endif // WLAN_WAKEUP_EVENTS
13809
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013810 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13811
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13813 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13814 sizeof(tSirMacAddr));
13815
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 wpalMemoryCopy( pSendBuffer+usDataOffset,
13817 &wowlEnterReq,
13818 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013819
13820 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013822
13823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13827 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013828}/*WDI_ProcessWowlEnterReq*/
13829
13830/**
13831 @brief Process Wowl exit Request function (called when Main FSM
13832 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013833
13834 @param pWDICtx: pointer to the WLAN DAL context
13835 pEventData: pointer to the event information structure
13836
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 @see
13838 @return Result of the function call
13839*/
13840WDI_Status
13841WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013842(
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 WDI_ControlBlockType* pWDICtx,
13844 WDI_EventInfoType* pEventData
13845)
13846{
13847 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013848 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 wpt_uint16 usDataOffset = 0;
13851 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013852 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13854
13855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 -------------------------------------------------------------------------*/
13858 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013859 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13861 {
13862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013866 }
13867
13868 /*-----------------------------------------------------------------------
13869 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013873 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013875 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 {
13877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13878 "Unable to get send buffer in Wowl Exit req %x %x",
13879 pEventData, wdiWowlExitCb);
13880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013882 }
13883
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013884 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13885
13886 wpalMemoryCopy( pSendBuffer+usDataOffset,
13887 &wowlExitparams,
13888 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13893 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013894}/*WDI_ProcessWowlExitReq*/
13895
13896/**
13897 @brief Process Configure Apps Cpu Wakeup State Request function
13898 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013899
13900 @param pWDICtx: pointer to the WLAN DAL context
13901 pEventData: pointer to the event information structure
13902
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 @see
13904 @return Result of the function call
13905*/
13906WDI_Status
13907WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013908(
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 WDI_ControlBlockType* pWDICtx,
13910 WDI_EventInfoType* pEventData
13911)
13912{
13913 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13914 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 wpt_uint16 usDataOffset = 0;
13917 wpt_uint16 usSendSize = 0;
13918 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13920
13921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 -------------------------------------------------------------------------*/
13924 if (( NULL == pEventData ) ||
13925 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13926 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13927 {
13928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 }
13933
13934 /*-----------------------------------------------------------------------
13935 Get message buffer
13936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 sizeof(halCfgAppsCpuWakeupStateReqParams),
13939 &pSendBuffer, &usDataOffset, &usSendSize))||
13940 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13941 {
13942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13943 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13944 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 }
13948
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13951
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 wpalMemoryCopy( pSendBuffer+usDataOffset,
13953 &halCfgAppsCpuWakeupStateReqParams,
13954 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013955
13956 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013958
13959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13963 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13964 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013965}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13966
13967#ifdef WLAN_FEATURE_VOWIFI_11R
13968/**
13969 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013971
13972 @param pWDICtx: pointer to the WLAN DAL context
13973 pEventData: pointer to the event information structure
13974
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 @see
13976 @return Result of the function call
13977*/
13978WDI_Status
13979WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013980(
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 WDI_ControlBlockType* pWDICtx,
13982 WDI_EventInfoType* pEventData
13983)
13984{
13985 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13986 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 wpt_uint16 usDataOffset = 0;
13991 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 wpt_macAddr macBSSID;
13994 tAggrAddTsReq halAggrAddTsReq;
13995 int i;
13996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13997
13998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 -------------------------------------------------------------------------*/
14001 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14002 ( NULL == pEventData->pCBfnc ))
14003 {
14004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14010 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14011 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14012 /*-------------------------------------------------------------------------
14013 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 -------------------------------------------------------------------------*/
14016 wpalMutexAcquire(&pWDICtx->wptMutex);
14017
14018 /*------------------------------------------------------------------------
14019 Find the BSS for which the request is made and identify WDI session
14020 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14022 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 &macBSSID))
14024 {
14025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14026 "This station does not exist in the WDI Station Table %d");
14027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 }
14030
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14032 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14035 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14036 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014037
14038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014041
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 /*------------------------------------------------------------------------
14043 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 ------------------------------------------------------------------------*/
14046 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14047 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14049 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014051
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 }
14056
14057 wpalMutexRelease(&pWDICtx->wptMutex);
14058 /*-----------------------------------------------------------------------
14059 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 sizeof(tAggrAddTsParams),
14064 &pSendBuffer, &usDataOffset, &usSendSize))||
14065 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14066 {
14067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14068 "Unable to get send buffer in set bss key req %x %x %x",
14069 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14078
14079 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14087 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14090 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14093 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14096 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14099 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14102 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14105 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14108 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014113
14114
14115 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014132 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014133 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14145 }
14146
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 wpalMemoryCopy( pSendBuffer+usDataOffset,
14148 &halAggrAddTsReq,
14149 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014150
14151 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014153
14154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014160}/*WDI_ProcessAggrAddTSpecReq*/
14161#endif /* WLAN_FEATURE_VOWIFI_11R */
14162
14163/**
14164 @brief Process Shutdown Request function (called when Main FSM
14165 allows it)
14166
14167 @param pWDICtx: pointer to the WLAN DAL context
14168 pEventData: pointer to the event information structure
14169
14170 @see
14171 @return Result of the function call
14172*/
14173WDI_Status
14174WDI_ProcessShutdownReq
14175(
14176 WDI_ControlBlockType* pWDICtx,
14177 WDI_EventInfoType* pEventData
14178 )
14179{
14180 wpt_status wptStatus;
14181
14182
14183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14184
14185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 -------------------------------------------------------------------------*/
14188 if ( NULL == pEventData )
14189 {
14190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 WDI_ASSERT(0);
14193 return WDI_STATUS_E_FAILURE;
14194 }
14195
14196 wpalMutexAcquire(&pWDICtx->wptMutex);
14197
14198
14199 gWDIInitialized = eWLAN_PAL_FALSE;
14200 /*! TO DO: stop the data services */
14201 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14202 {
14203 /*Stop the STA Table !UT- check this logic again
14204 It is safer to do it here than on the response - because a stop is imminent*/
14205 WDI_STATableStop(pWDICtx);
14206
14207 /* Stop Transport Driver, DXE */
14208 WDTS_Stop(pWDICtx);
14209 }
14210
14211 /*Clear all pending request*/
14212 WDI_ClearPendingRequests(pWDICtx);
14213 /* Close Data transport*/
14214 /* FTM mode does not open Data Path */
14215 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14216 {
14217 WDTS_Close(pWDICtx);
14218 }
14219 /*Close the STA Table !UT- check this logic again*/
14220 WDI_STATableClose(pWDICtx);
14221 /*close the PAL */
14222 wptStatus = wpalClose(pWDICtx->pPALContext);
14223 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14224 {
14225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14226 "Failed to wpal Close %d", wptStatus);
14227 WDI_ASSERT(0);
14228 }
14229
14230 /*Transition back to init state*/
14231 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14232
14233 wpalMutexRelease(&pWDICtx->wptMutex);
14234
14235 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014237
14238
Jeff Johnsone7245742012-09-05 17:12:55 -070014239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014240}/*WDI_ProcessShutdownReq*/
14241
14242/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014244========================================================================*/
14245
14246/**
14247 @brief Process Start Response function (called when a response
14248 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014249
14250 @param pWDICtx: pointer to the WLAN DAL context
14251 pEventData: pointer to the event information structure
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 @see
14254 @return Result of the function call
14255*/
14256WDI_Status
14257WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014258(
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 WDI_ControlBlockType* pWDICtx,
14260 WDI_EventInfoType* pEventData
14261)
14262{
14263 WDI_StartRspParamsType wdiRspParams;
14264 WDI_StartRspCb wdiStartRspCb = NULL;
14265
14266 tHalMacStartRspParams* startRspParams;
14267
14268#ifndef HAL_SELF_STA_PER_BSS
14269 WDI_AddStaParams wdiAddSTAParam = {0};
14270#endif
14271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14272
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 -------------------------------------------------------------------------*/
14277 if (( NULL == pEventData ) ||
14278 ( NULL == pEventData->pEventData) ||
14279 ( NULL == wdiStartRspCb ))
14280 {
14281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 }
14286
14287 /*-------------------------------------------------------------------------
14288 Extract response and send it to UMAC
14289 -------------------------------------------------------------------------*/
14290 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14291 {
14292 // not enough data was received
14293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14294 "Invalid response length in Start Resp Expect %x Rcvd %x",
14295 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 }
14299
14300 /*-------------------------------------------------------------------------
14301 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 -------------------------------------------------------------------------*/
14304 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14305
14306 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14307 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14308 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14309 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14310 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14311 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14312 wdiRspParams.wlanReportedVersion.major =
14313 startRspParams->wcnssWlanVersion.major;
14314 wdiRspParams.wlanReportedVersion.minor =
14315 startRspParams->wcnssWlanVersion.minor;
14316 wdiRspParams.wlanReportedVersion.version =
14317 startRspParams->wcnssWlanVersion.version;
14318 wdiRspParams.wlanReportedVersion.revision =
14319 startRspParams->wcnssWlanVersion.revision;
14320 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14321 startRspParams->wcnssCrmVersionString,
14322 sizeof(wdiRspParams.wcnssSoftwareVersion));
14323 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14324 startRspParams->wcnssWlanVersionString,
14325 sizeof(wdiRspParams.wcnssHardwareVersion));
14326 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14327
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014328 /*Save the HAL Version*/
14329 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14330
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 wpalMutexAcquire(&pWDICtx->wptMutex);
14332 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14333 {
14334 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14335
14336 /*Cache the start response for further use*/
14337 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014338 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 sizeof(pWDICtx->wdiCachedStartRspParams));
14340
14341 }
14342 else
14343 {
14344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14345 "Failed to start device with status %s(%d)",
14346 WDI_getHALStatusMsgString(startRspParams->status),
14347 startRspParams->status);
14348
14349 /*Set the expected state transition to stopped - because the start has
14350 failed*/
14351 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14352
14353 wpalMutexRelease(&pWDICtx->wptMutex);
14354
14355 /*Notify UMAC*/
14356 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014357
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14359
14360 /*Although the response is an error - it was processed by our function
14361 so as far as the caller is concerned this is a succesful reponse processing*/
14362 return WDI_STATUS_SUCCESS;
14363 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014364
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 wpalMutexRelease(&pWDICtx->wptMutex);
14366
14367 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14368 {
14369 /* FTM mode does not need to execute below */
14370 /* Notify UMAC */
14371 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14372 return WDI_STATUS_SUCCESS;
14373 }
14374
14375 /* START the Data transport */
14376 WDTS_startTransport(pWDICtx);
14377
14378 /*Start the STA Table !- check this logic again*/
14379 WDI_STATableStart(pWDICtx);
14380
14381#ifndef HAL_SELF_STA_PER_BSS
14382 /* Store the Self STA Index */
14383 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14384
14385 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14386 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14387 WDI_MAC_ADDR_LEN);
14388
14389 /* At this point add the self-STA */
14390
14391 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14392 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14393 /*! TO DO: wdiAddSTAParam.dpuSig */
14394 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14395 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14396 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14397
14398 //all DPU indices are the same for self STA
14399 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14400 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014401 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14403 WDI_MAC_ADDR_LEN);
14404 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14405 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14406
14407 /* Note: Since we don't get an explicit config STA request for self STA, we
14408 add the self STA upon receiving the Start response message. But the
14409 self STA entry in the table is deleted when WDI gets an explicit delete STA
14410 request */
14411 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14412#endif
14413
14414 /*Notify UMAC*/
14415 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14416
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014418}/*WDI_ProcessStartRsp*/
14419
14420
14421/**
14422 @brief Process Stop Response function (called when a response
14423 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014424
14425 @param pWDICtx: pointer to the WLAN DAL context
14426 pEventData: pointer to the event information structure
14427
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 @see
14429 @return Result of the function call
14430*/
14431WDI_Status
14432WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014433(
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 WDI_ControlBlockType* pWDICtx,
14435 WDI_EventInfoType* pEventData
14436)
14437{
14438 WDI_Status wdiStatus;
14439 WDI_StopRspCb wdiStopRspCb = NULL;
14440
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14443
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 -------------------------------------------------------------------------*/
14448 if (( NULL == pEventData ) ||
14449 ( NULL == pEventData->pEventData) ||
14450 ( NULL == wdiStopRspCb ))
14451 {
14452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 }
14457
14458 /*-------------------------------------------------------------------------
14459 Extract response and send it to UMAC
14460 -------------------------------------------------------------------------*/
14461 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14464 "Invalid response length in Stop Resp %x %x",
14465 pEventData->uEventDataSize);
14466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 }
14469
14470 /*-------------------------------------------------------------------------
14471 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14475 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 sizeof(halMacStopRspMsg.stopRspParams));
14477
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 wpalMutexAcquire(&pWDICtx->wptMutex);
14481
14482 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 --------------------------------------------------------------------------*/
14485 if ( WDI_STATUS_SUCCESS != wdiStatus )
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14488 "Failed to stop the device with status %s (%d)",
14489 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14490 halMacStopRspMsg.stopRspParams.status);
14491
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14493
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014497
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14499
14500 /*Transition now as WDI may get preempted imediately after it sends
14501 up the Stop Response and it will not get to process the state transition
14502 from Main Rsp function*/
14503 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14504 wpalMutexRelease(&pWDICtx->wptMutex);
14505
14506 /*! TO DO: - STOP the Data transport */
14507
14508 /*Notify UMAC*/
14509 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14510
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512}/*WDI_ProcessStopRsp*/
14513
14514/**
14515 @brief Process Close Rsp function (called when a response
14516 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014517
14518 @param pWDICtx: pointer to the WLAN DAL context
14519 pEventData: pointer to the event information structure
14520
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 @see
14522 @return Result of the function call
14523*/
14524WDI_Status
14525WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014526(
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 WDI_ControlBlockType* pWDICtx,
14528 WDI_EventInfoType* pEventData
14529)
14530{
14531 /*There is no close response comming from HAL - function just kept for
14532 simmetry */
14533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535}/*WDI_ProcessCloseRsp*/
14536
14537
14538/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014540============================================================================*/
14541
14542/**
14543 @brief Process Init Scan Rsp function (called when a response
14544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014545
14546 @param pWDICtx: pointer to the WLAN DAL context
14547 pEventData: pointer to the event information structure
14548
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 @see
14550 @return Result of the function call
14551*/
14552WDI_Status
14553WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014554(
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 WDI_ControlBlockType* pWDICtx,
14556 WDI_EventInfoType* pEventData
14557)
14558{
14559 WDI_Status wdiStatus;
14560 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014562 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14564
14565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 -------------------------------------------------------------------------*/
14568 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14569 ( NULL == pEventData->pEventData))
14570 {
14571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 }
14576
14577 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14578 if( NULL == wdiInitScanRspCb)
14579 {
14580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014581 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 }
14585
14586 /*-------------------------------------------------------------------------
14587 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14591 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 sizeof(halInitScanRspMsg.initScanRspParams));
14593
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014595
14596 if ( pWDICtx->bInBmps )
14597 {
14598 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014599 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14600 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14602 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14603 WDI_ASSERT(0);
14604 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 }
14606
14607 /*Notify UMAC*/
14608 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14609
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611}/*WDI_ProcessInitScanRsp*/
14612
14613
14614/**
14615 @brief Process Start Scan Rsp function (called when a response
14616 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014617
14618 @param pWDICtx: pointer to the WLAN DAL context
14619 pEventData: pointer to the event information structure
14620
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 @see
14622 @return Result of the function call
14623*/
14624WDI_Status
14625WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014626(
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 WDI_ControlBlockType* pWDICtx,
14628 WDI_EventInfoType* pEventData
14629)
14630{
14631 WDI_StartScanRspParamsType wdiStartScanParams;
14632 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014633
14634 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14636
14637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 -------------------------------------------------------------------------*/
14640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14641 ( NULL == pEventData->pEventData))
14642 {
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 }
14648
14649 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14650 if( NULL == wdiStartScanRspCb)
14651 {
14652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014653 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 }
14657
14658 /*-------------------------------------------------------------------------
14659 Extract response and send it to UMAC
14660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14662 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 sizeof(halStartScanRspMsg.startScanRspParams));
14664
14665 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14666 halStartScanRspMsg.startScanRspParams.status);
14667#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 halStartScanRspMsg.startScanRspParams.startTSF,
14672 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014673#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014674
14675 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14678 "Start scan failed with status %s (%d)",
14679 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14680 halStartScanRspMsg.startScanRspParams.status);
14681 /* send the status to UMAC, don't return from here*/
14682 }
14683
14684 /*Notify UMAC*/
14685 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14686
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014688
14689}/*WDI_ProcessStartScanRsp*/
14690
14691
14692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014695
14696 @param pWDICtx: pointer to the WLAN DAL context
14697 pEventData: pointer to the event information structure
14698
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 @see
14700 @return Result of the function call
14701*/
14702WDI_Status
14703WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014704(
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 WDI_ControlBlockType* pWDICtx,
14706 WDI_EventInfoType* pEventData
14707)
14708{
14709 WDI_Status wdiStatus;
14710 tHalEndScanRspMsg halEndScanRspMsg;
14711 WDI_EndScanRspCb wdiEndScanRspCb;
14712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14713
14714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 -------------------------------------------------------------------------*/
14717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14718 ( NULL == pEventData->pEventData))
14719 {
14720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 }
14725
14726 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14727
14728 /*-------------------------------------------------------------------------
14729 Extract response and send it to UMAC
14730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14732 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 sizeof(halEndScanRspMsg.endScanRspParams));
14734
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014736
14737 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14738 {
14739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14740 "End Scan failed with status %s (%d )",
14741 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14742 halEndScanRspMsg.endScanRspParams.status);
14743 /* send the status to UMAC, don't return from here*/
14744 }
14745
14746 /*Notify UMAC*/
14747 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14748
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750}/*WDI_ProcessEndScanRsp*/
14751
14752
14753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014756
14757 @param pWDICtx: pointer to the WLAN DAL context
14758 pEventData: pointer to the event information structure
14759
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 @see
14761 @return Result of the function call
14762*/
14763WDI_Status
14764WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014765(
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 WDI_ControlBlockType* pWDICtx,
14767 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014768)
Jeff Johnson295189b2012-06-20 16:38:30 -070014769{
14770 WDI_Status wdiStatus;
14771 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772
14773 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14775
14776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 -------------------------------------------------------------------------*/
14779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14780 ( NULL == pEventData->pEventData))
14781 {
14782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 }
14787
14788 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14789
14790 /*-------------------------------------------------------------------------
14791 Extract response and send it to UMAC
14792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14794 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14796
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014798
14799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 halFinishScanRspMsg.finishScanRspParams.status);
14802
14803 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14804 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14805 {
14806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14807 "Finish Scan failed with status %s (%d)",
14808 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14809 halFinishScanRspMsg.finishScanRspParams.status);
14810 /* send the status to UMAC, don't return from here*/
14811 }
14812
14813 /*Notify UMAC*/
14814 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14815
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014817}/*WDI_ProcessFinishScanRsp*/
14818
14819/**
14820 @brief Process Join Response function (called when a response
14821 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014822
14823 @param pWDICtx: pointer to the WLAN DAL context
14824 pEventData: pointer to the event information structure
14825
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 @see
14827 @return Result of the function call
14828*/
14829WDI_Status
14830WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014831(
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 WDI_ControlBlockType* pWDICtx,
14833 WDI_EventInfoType* pEventData
14834)
14835{
14836 WDI_Status wdiStatus;
14837 WDI_JoinRspCb wdiJoinRspCb;
14838 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014839
14840 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14842
14843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 -------------------------------------------------------------------------*/
14846 if (( NULL == pWDICtx ) ||
14847 ( NULL == pWDICtx->pfncRspCB ) ||
14848 ( NULL == pEventData ) ||
14849 ( NULL == pEventData->pEventData))
14850 {
14851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 }
14856
14857 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14858
14859 /*-------------------------------------------------------------------------
14860 Extract response and send it to UMAC
14861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14863 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 sizeof(halJoinRspMsg.joinRspParams));
14865
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014867
14868 wpalMutexAcquire(&pWDICtx->wptMutex);
14869
14870 /*-----------------------------------------------------------------------
14871 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14879 "association no longer in progress %d - mysterious HAL response",
14880 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014881
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 }
14886
14887 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14888
14889 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 -----------------------------------------------------------------------*/
14892 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14893 {
14894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14895 "Join only allowed in Joining state - failure state is %d "
14896 "strange HAL response", pBSSSes->wdiAssocState);
14897
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14899
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 }
14903
14904
14905 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 -----------------------------------------------------------------------*/
14908 if ( WDI_STATUS_SUCCESS != wdiStatus )
14909 {
14910 /*Association was failed by HAL - remove session*/
14911 WDI_DeleteSession(pWDICtx, pBSSSes);
14912
14913 /*Association no longer in progress */
14914 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14915
14916 /*Association no longer in progress - prepare pending assoc for processing*/
14917 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014918
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 }
14920 else
14921 {
14922 /*Transition to state Joining - this may be redundant as we are supposed
14923 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 }
14926
14927 wpalMutexRelease(&pWDICtx->wptMutex);
14928
14929 /*Notify UMAC*/
14930 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14931
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933}/*WDI_ProcessJoinRsp*/
14934
14935
14936/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014939
14940 @param pWDICtx: pointer to the WLAN DAL context
14941 pEventData: pointer to the event information structure
14942
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 @see
14944 @return Result of the function call
14945*/
14946WDI_Status
14947WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014948(
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 WDI_ControlBlockType* pWDICtx,
14950 WDI_EventInfoType* pEventData
14951)
14952{
14953 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14954 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_BSSSessionType* pBSSSes = NULL;
14957
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14960 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014961
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14963
14964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 -------------------------------------------------------------------------*/
14967 if (( NULL == pEventData ) ||
14968 ( NULL == pEventData->pEventData))
14969 {
14970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 }
14975
14976 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14977
14978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14982 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 sizeof(halConfigBssRspMsg.configBssRspParams));
14984
14985 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14986 halConfigBssRspMsg.configBssRspParams.status);
14987 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14991 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014992
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014994
14995 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014997
14998 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015000
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015002
Jeff Johnson295189b2012-06-20 16:38:30 -070015003 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15006 #endif
15007 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15008 halConfigBssRspMsg.configBssRspParams.staMac,
15009 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015010
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 wpalMutexAcquire(&pWDICtx->wptMutex);
15012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15016 wdiConfigBSSParams.macBSSID,
15017 &pBSSSes);
15018
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 /*-----------------------------------------------------------------------
15020 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 -----------------------------------------------------------------------*/
15023 if ( NULL == pBSSSes )
15024 {
15025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15026 "Association sequence for this BSS does not yet exist "
15027 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015028
15029 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15030
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015034
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 /*Save data for this BSS*/
15036 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15037 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15048 pBSSSes->bcastStaIdx =
15049 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015050
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 /*-------------------------------------------------------------------------
15054 Add Peer STA
15055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15058 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015059
Jeff Johnson295189b2012-06-20 16:38:30 -070015060 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 wdiAddSTAParam.ucHTCapable =
15064 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15065 wdiAddSTAParam.ucStaType =
15066 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15067
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15070 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015072
15073 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15074 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15075 WDI_MAC_ADDR_LEN);
15076
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015090
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15092 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015093
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15095 /*-------------------------------------------------------------------------
15096 Add Broadcast STA only in AP mode
15097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 WDI_BSS_OPERATIONAL_MODE_AP )
15100 {
15101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15102 "Add BCAST STA to table for index: %d",
15103 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015104
15105 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015107
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15109 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15110 }
15111 wpalMutexRelease(&pWDICtx->wptMutex);
15112 }
15113 else
15114 {
15115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15116 "Config BSS RSP failed with status : %s(%d)",
15117 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 halConfigBssRspMsg.configBssRspParams.status);
15120
Jeff Johnsone7245742012-09-05 17:12:55 -070015121
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 /*Association was failed by HAL - remove session*/
15123 WDI_DeleteSession(pWDICtx, pBSSSes);
15124
15125 /*Association no longer in progress */
15126 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15127
15128 /*Association no longer in progress - prepare pending assoc for processing*/
15129 WDI_DequeueAssocRequest(pWDICtx);
15130
15131 }
15132
15133 /*Notify UMAC*/
15134 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15135
Jeff Johnsone7245742012-09-05 17:12:55 -070015136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015137}/*WDI_ProcessConfigBSSRsp*/
15138
15139
15140/**
15141 @brief Process Del BSS Response function (called when a response
15142 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015143
15144 @param pWDICtx: pointer to the WLAN DAL context
15145 pEventData: pointer to the event information structure
15146
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 @see
15148 @return Result of the function call
15149*/
15150WDI_Status
15151WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015152(
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 WDI_ControlBlockType* pWDICtx,
15154 WDI_EventInfoType* pEventData
15155)
15156{
15157 WDI_DelBSSRspParamsType wdiDelBSSParams;
15158 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 WDI_BSSSessionType* pBSSSes = NULL;
15161
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15164
15165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 -------------------------------------------------------------------------*/
15168 if (( NULL == pEventData ) ||
15169 ( NULL == pEventData->pEventData))
15170 {
15171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 }
15176
15177 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15178
15179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 sizeof(halDelBssRspMsg.deleteBssRspParams));
15185
15186
15187 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015189
15190 wpalMutexAcquire(&pWDICtx->wptMutex);
15191
15192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15196 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15197 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015198
15199 /*-----------------------------------------------------------------------
15200 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 -----------------------------------------------------------------------*/
15203 if ( NULL == pBSSSes )
15204 {
15205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15206 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015207 "association no longer in progress - mysterious HAL response");
15208
15209 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15210
15211 wpalMutexRelease(&pWDICtx->wptMutex);
15212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015214
15215 /*Extract BSSID for the response to UMAC*/
15216 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15217 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15218
15219 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15220
15221 /*-----------------------------------------------------------------------
15222 The current session will be deleted
15223 -----------------------------------------------------------------------*/
15224 WDI_DeleteSession(pWDICtx, pBSSSes);
15225
15226
15227 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15228 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015230 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015231 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015232
15233 /* Delete the STA's in this BSS */
15234 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15235
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 wpalMutexRelease(&pWDICtx->wptMutex);
15237
15238 /*Notify UMAC*/
15239 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15240
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015242}/*WDI_ProcessDelBSSRsp*/
15243
15244/**
15245 @brief Process Post Assoc Rsp function (called when a response
15246 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015247
15248 @param pWDICtx: pointer to the WLAN DAL context
15249 pEventData: pointer to the event information structure
15250
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 @see
15252 @return Result of the function call
15253*/
15254WDI_Status
15255WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015256(
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_ControlBlockType* pWDICtx,
15258 WDI_EventInfoType* pEventData
15259)
15260{
15261 WDI_PostAssocRspParamsType wdiPostAssocParams;
15262 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15267
15268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -------------------------------------------------------------------------*/
15271 if (( NULL == pEventData ) ||
15272 ( NULL == pEventData->pEventData))
15273 {
15274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 }
15279
15280 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15281
15282 /*-------------------------------------------------------------------------
15283 Extract response and send it to UMAC
15284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15286 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 sizeof(halPostAssocRspMsg.postAssocRspParams));
15288
15289 /*Extract the Post Assoc STA Params */
15290
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15297
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 wdiPostAssocParams.wdiStatus =
15299 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015300
15301 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15302 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15304 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 WDI_MAC_ADDR_LEN);
15306
15307 /* Extract Post Assoc BSS Params */
15308
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15310 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15311 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015312
15313 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15314 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15317 .macSTA, WDI_MAC_ADDR_LEN);
15318
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15321
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15324
15325 wdiPostAssocParams.bssParams.ucBSSIdx =
15326 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15327
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15330
15331 wpalMutexAcquire(&pWDICtx->wptMutex);
15332
15333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015339
15340 /*-----------------------------------------------------------------------
15341 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 -----------------------------------------------------------------------*/
15344 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15347 {
15348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15349 "Association sequence for this BSS does not yet exist or "
15350 "association no longer in progress - mysterious HAL response");
15351
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15353
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 }
15357
15358 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 -----------------------------------------------------------------------*/
15361 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15362 {
15363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15364 "Post Assoc not allowed before JOIN - failing request "
15365 "strange HAL response");
15366
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15368
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 }
15372
15373 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 -----------------------------------------------------------------------*/
15376 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15377 {
15378 /*Association was failed by HAL - remove session*/
15379 WDI_DeleteSession(pWDICtx, pBSSSes);
15380 }
15381 else
15382 {
15383 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385
15386 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15395
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15398 }
15399
15400 /*Association no longer in progress */
15401 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15402
15403 /*Association no longer in progress - prepare pending assoc for processing*/
15404 WDI_DequeueAssocRequest(pWDICtx);
15405
15406 wpalMutexRelease(&pWDICtx->wptMutex);
15407
15408 /*Notify UMAC*/
15409 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15410
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015412}/*WDI_ProcessPostAssocRsp*/
15413
15414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015417
15418 @param pWDICtx: pointer to the WLAN DAL context
15419 pEventData: pointer to the event information structure
15420
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 @see
15422 @return Result of the function call
15423*/
15424WDI_Status
15425WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015426(
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ControlBlockType* pWDICtx,
15428 WDI_EventInfoType* pEventData
15429)
15430{
15431 WDI_DelSTARspParamsType wdiDelSTARsp;
15432 WDI_DelSTARspCb wdiDelSTARspCb;
15433 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15436
15437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 -------------------------------------------------------------------------*/
15440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15441 ( NULL == pEventData->pEventData))
15442 {
15443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 }
15448
15449 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15450
15451 /*-------------------------------------------------------------------------
15452 Extract response and send it to UMAC
15453 -------------------------------------------------------------------------*/
15454 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 sizeof(halDelStaRspMsg.delStaRspParams));
15457
15458 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 wdiDelSTARsp.wdiStatus =
15460 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015461
15462 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15463
15464 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15465 if(staType == WDI_STA_ENTRY_SELF)
15466 {
15467 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15468
15469 /* At this point add the self-STA */
15470
15471 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15472 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15473 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15474
15475#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15476#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15477
15478 //all DPU indices are the same for self STA
15479 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15480 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15481 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15482 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15483 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15484 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015485
15486 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 }
15488 else
15489 {
15490 //Delete the station in the table
15491 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15492 }
15493
15494 /*Notify UMAC*/
15495 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15496
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498}/*WDI_ProcessDelSTARsp*/
15499
15500
15501/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015503==========================================================================*/
15504
15505/**
15506 @brief Process Set BSS Key Rsp function (called when a response
15507 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015508
15509 @param pWDICtx: pointer to the WLAN DAL context
15510 pEventData: pointer to the event information structure
15511
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 @see
15513 @return Result of the function call
15514*/
15515WDI_Status
15516WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015517(
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 WDI_ControlBlockType* pWDICtx,
15519 WDI_EventInfoType* pEventData
15520)
15521{
15522 WDI_Status wdiStatus;
15523 eHalStatus halStatus;
15524 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15526
15527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015529 -------------------------------------------------------------------------*/
15530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15531 ( NULL == pEventData->pEventData))
15532 {
15533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 }
15538
15539 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15540
15541 /*-------------------------------------------------------------------------
15542 Extract response and send it to UMAC
15543 -------------------------------------------------------------------------*/
15544 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015546
15547 if ( eHAL_STATUS_SUCCESS != halStatus )
15548 {
15549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15550 "Set BSS Key failed with status %s (%d)",
15551 WDI_getHALStatusMsgString(halStatus),
15552 halStatus);
15553 /* send the status to UMAC, don't return from here*/
15554 }
15555
15556 /*Notify UMAC*/
15557 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15558
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015560}/*WDI_ProcessSetBssKeyRsp*/
15561
15562/**
15563 @brief Process Remove BSS Key Rsp function (called when a response
15564 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015565
15566 @param pWDICtx: pointer to the WLAN DAL context
15567 pEventData: pointer to the event information structure
15568
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 @see
15570 @return Result of the function call
15571*/
15572WDI_Status
15573WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015574(
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 WDI_ControlBlockType* pWDICtx,
15576 WDI_EventInfoType* pEventData
15577)
15578{
15579 WDI_Status wdiStatus;
15580 eHalStatus halStatus;
15581 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15583
15584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 -------------------------------------------------------------------------*/
15587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15588 ( NULL == pEventData->pEventData))
15589 {
15590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 }
15595
15596 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15597
15598 /*-------------------------------------------------------------------------
15599 Extract response and send it to UMAC
15600 -------------------------------------------------------------------------*/
15601 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015603
15604 if ( eHAL_STATUS_SUCCESS != halStatus )
15605 {
15606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15607 "Remove BSS Key failed with status %s (%d )",
15608 WDI_getHALStatusMsgString(halStatus),
15609 halStatus);
15610 /* send the status to UMAC, don't return from here*/
15611 }
15612
15613 /*Notify UMAC*/
15614 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15615
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015617}/*WDI_ProcessSetBssKeyRsp*/
15618
15619
15620/**
15621 @brief Process Set STA Key Rsp function (called when a response
15622 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_Status wdiStatus;
15638 eHalStatus halStatus;
15639 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15641
15642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 -------------------------------------------------------------------------*/
15645 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15646 ( NULL == pEventData->pEventData))
15647 {
15648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 }
15653
15654 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15655
15656 /*-------------------------------------------------------------------------
15657 Extract response and send it to UMAC
15658 -------------------------------------------------------------------------*/
15659 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015661
15662 if ( eHAL_STATUS_SUCCESS != halStatus )
15663 {
15664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15665 "Set STA Key failed with status %s (%d)",
15666 WDI_getHALStatusMsgString(halStatus),
15667 halStatus);
15668 /* send the status to UMAC, don't return from here*/
15669 }
15670
15671 /*Notify UMAC*/
15672 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15673
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675}/*WDI_ProcessSetSTAKeyRsp*/
15676
15677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015680
15681 @param pWDICtx: pointer to the WLAN DAL context
15682 pEventData: pointer to the event information structure
15683
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 @see
15685 @return Result of the function call
15686*/
15687WDI_Status
15688WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015689(
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 WDI_ControlBlockType* pWDICtx,
15691 WDI_EventInfoType* pEventData
15692)
15693{
15694 WDI_Status wdiStatus;
15695 eHalStatus halStatus;
15696 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15698
15699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 -------------------------------------------------------------------------*/
15702 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15703 ( NULL == pEventData->pEventData))
15704 {
15705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 }
15710
15711 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15712
15713 /*-------------------------------------------------------------------------
15714 Extract response and send it to UMAC
15715 -------------------------------------------------------------------------*/
15716 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015718
15719 if ( eHAL_STATUS_SUCCESS != halStatus )
15720 {
15721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15722 "Remove STA Key failed with status %s (%d)",
15723 WDI_getHALStatusMsgString(halStatus),
15724 halStatus);
15725 /* send the status to UMAC, don't return from here*/
15726 }
15727
15728 /*Notify UMAC*/
15729 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15730
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732}/*WDI_ProcessRemoveStaKeyRsp*/
15733
15734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015737
15738 @param pWDICtx: pointer to the WLAN DAL context
15739 pEventData: pointer to the event information structure
15740
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 @see
15742 @return Result of the function call
15743*/
15744WDI_Status
15745WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015746(
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 WDI_ControlBlockType* pWDICtx,
15748 WDI_EventInfoType* pEventData
15749)
15750{
15751 WDI_Status wdiStatus;
15752 eHalStatus halStatus;
15753 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15755
15756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 -------------------------------------------------------------------------*/
15759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15760 ( NULL == pEventData->pEventData))
15761 {
15762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 }
15767
15768 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15769
15770 /*-------------------------------------------------------------------------
15771 Extract response and send it to UMAC
15772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 wpalMemoryCopy( &halStatus,
15774 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 sizeof(halStatus));
15776
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778
15779 if ( eHAL_STATUS_SUCCESS != halStatus )
15780 {
15781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15782 "Set STA Key failed with status %s (%d)",
15783 WDI_getHALStatusMsgString(halStatus),
15784 halStatus);
15785 /* send the status to UMAC, don't return from here*/
15786 }
15787
15788 /*Notify UMAC*/
15789 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15790
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015792}/*WDI_ProcessSetSTABcastKeyRsp*/
15793
15794/**
15795 @brief Process Remove STA Bcast Key Rsp function (called when a
15796 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015797
15798 @param pWDICtx: pointer to the WLAN DAL context
15799 pEventData: pointer to the event information structure
15800
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 @see
15802 @return Result of the function call
15803*/
15804WDI_Status
15805WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015806(
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 WDI_ControlBlockType* pWDICtx,
15808 WDI_EventInfoType* pEventData
15809)
15810{
15811 WDI_Status wdiStatus;
15812 eHalStatus halStatus;
15813 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15815
15816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 -------------------------------------------------------------------------*/
15819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15820 ( NULL == pEventData->pEventData))
15821 {
15822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 }
15827
15828 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15829
15830 /*-------------------------------------------------------------------------
15831 Extract response and send it to UMAC
15832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 wpalMemoryCopy( &halStatus,
15834 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 sizeof(halStatus));
15836
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015838
15839 if ( eHAL_STATUS_SUCCESS != halStatus )
15840 {
15841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15842 "Remove STA Key failed with status %s (%d)",
15843 WDI_getHALStatusMsgString(halStatus),
15844 halStatus);
15845 /* send the status to UMAC, don't return from here*/
15846 }
15847
15848 /*Notify UMAC*/
15849 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15850
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015852}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15853
15854
15855/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015857==========================================================================*/
15858
15859/**
15860 @brief Process Add TSpec Rsp function (called when a response
15861 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
15863 @param pWDICtx: pointer to the WLAN DAL context
15864 pEventData: pointer to the event information structure
15865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 @see
15867 @return Result of the function call
15868*/
15869WDI_Status
15870WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015871(
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 WDI_ControlBlockType* pWDICtx,
15873 WDI_EventInfoType* pEventData
15874)
15875{
15876 WDI_Status wdiStatus;
15877 eHalStatus halStatus;
15878 WDI_AddTsRspCb wdiAddTsRspCb;
15879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15880
15881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 -------------------------------------------------------------------------*/
15884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15885 ( NULL == pEventData->pEventData))
15886 {
15887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 }
15892
15893 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15894
15895 /*-------------------------------------------------------------------------
15896 Extract response and send it to UMAC
15897 -------------------------------------------------------------------------*/
15898 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015899 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015900
15901 /*Notify UMAC*/
15902 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15903
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015905}/*WDI_ProcessAddTSpecRsp*/
15906
15907
15908/**
15909 @brief Process Del TSpec Rsp function (called when a response
15910 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015911
15912 @param pWDICtx: pointer to the WLAN DAL context
15913 pEventData: pointer to the event information structure
15914
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 @see
15916 @return Result of the function call
15917*/
15918WDI_Status
15919WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015920(
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 WDI_ControlBlockType* pWDICtx,
15922 WDI_EventInfoType* pEventData
15923)
15924{
15925 WDI_Status wdiStatus;
15926 eHalStatus halStatus;
15927 WDI_DelTsRspCb wdiDelTsRspCb;
15928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15929
15930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 -------------------------------------------------------------------------*/
15933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15934 ( NULL == pEventData->pEventData))
15935 {
15936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 }
15941
15942 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15943
15944 /*-------------------------------------------------------------------------
15945 Extract response and send it to UMAC
15946 -------------------------------------------------------------------------*/
15947 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015949
15950 /*Notify UMAC*/
15951 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954}/*WDI_ProcessDelTSpecRsp*/
15955
15956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015959
15960 @param pWDICtx: pointer to the WLAN DAL context
15961 pEventData: pointer to the event information structure
15962
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 @see
15964 @return Result of the function call
15965*/
15966WDI_Status
15967WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015968(
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 WDI_ControlBlockType* pWDICtx,
15970 WDI_EventInfoType* pEventData
15971)
15972{
15973 WDI_Status wdiStatus;
15974 eHalStatus halStatus;
15975 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15977
15978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 -------------------------------------------------------------------------*/
15981 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15982 ( NULL == pEventData->pEventData))
15983 {
15984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 }
15989
15990 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15991
15992 /*-------------------------------------------------------------------------
15993 Extract response and send it to UMAC
15994 -------------------------------------------------------------------------*/
15995 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015997
15998 /*Notify UMAC*/
15999 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16000
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016002}/*WDI_ProcessUpdateEDCAParamsRsp*/
16003
16004
16005/**
16006 @brief Process Add BA 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_ProcessAddBASessionRsp
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_AddBASessionRspCb wdiAddBASessionRspCb;
16023
16024 tAddBASessionRspParams halBASessionRsp;
16025 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16029
16030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 -------------------------------------------------------------------------*/
16033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16034 ( NULL == pEventData->pEventData))
16035 {
16036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 }
16041
16042 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16043
16044 /*-------------------------------------------------------------------------
16045 Extract response and send it to UMAC
16046 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 wpalMemoryCopy( &halBASessionRsp,
16048 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 sizeof(halBASessionRsp));
16050
16051 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16052
Jeff Johnson43971f52012-07-17 12:26:56 -070016053 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 {
16055 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16056 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16057 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16058 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16059 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16060 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16061 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16062 }
16063
16064 /*Notify UMAC*/
16065 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16066
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068}/*WDI_ProcessAddSessionBARsp*/
16069
16070
16071/**
16072 @brief Process Del BA Rsp function (called when a response
16073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016074
16075 @param pWDICtx: pointer to the WLAN DAL context
16076 pEventData: pointer to the event information structure
16077
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 @see
16079 @return Result of the function call
16080*/
16081WDI_Status
16082WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016083(
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 WDI_ControlBlockType* pWDICtx,
16085 WDI_EventInfoType* pEventData
16086)
16087{
16088 WDI_Status wdiStatus;
16089 eHalStatus halStatus;
16090 WDI_DelBARspCb wdiDelBARspCb;
16091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16092
16093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 -------------------------------------------------------------------------*/
16096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16097 ( NULL == pEventData->pEventData))
16098 {
16099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 }
16104
16105 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16106
16107 /*-------------------------------------------------------------------------
16108 Extract response and send it to UMAC
16109 -------------------------------------------------------------------------*/
16110 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016112
16113 if ( eHAL_STATUS_SUCCESS == halStatus )
16114 {
16115 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16116 }
16117
16118 /*Notify UMAC*/
16119 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16120
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016122}/*WDI_ProcessDelBARsp*/
16123
16124#ifdef FEATURE_WLAN_CCX
16125/**
16126 @brief Process TSM Stats Rsp function (called when a response
16127 is being received over the bus from HAL)
16128
16129 @param pWDICtx: pointer to the WLAN DAL context
16130 pEventData: pointer to the event information structure
16131
16132 @see
16133 @return Result of the function call
16134*/
16135WDI_Status
16136WDI_ProcessTsmStatsRsp
16137(
16138 WDI_ControlBlockType* pWDICtx,
16139 WDI_EventInfoType* pEventData
16140)
16141{
16142 WDI_TsmRspCb wdiTsmStatsRspCb;
16143 tTsmStatsRspMsg halTsmStatsRspMsg;
16144 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16146
16147 /*-------------------------------------------------------------------------
16148 Sanity check
16149 -------------------------------------------------------------------------*/
16150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16151 ( NULL == pEventData->pEventData))
16152 {
16153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 WDI_ASSERT(0);
16156 return WDI_STATUS_E_FAILURE;
16157 }
16158
16159 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16160
16161 /*-------------------------------------------------------------------------
16162 Unpack HAL Response Message - the header was already extracted by the
16163 main Response Handling procedure
16164 -------------------------------------------------------------------------*/
16165 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16166 pEventData->pEventData,
16167 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16168
16169 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16170 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16171 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16172 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16173 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16174 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16175 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16176 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16177 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16178 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16179 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16180 halTsmStatsRspMsg.tsmStatsRspParams.status);
16181
16182 /*Notify UMAC*/
16183 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16184
16185 return WDI_STATUS_SUCCESS;
16186}/*WDI_ProcessTsmStatsRsp*/
16187
16188#endif
16189
16190
16191
16192/**
16193 @brief Process Flush AC Rsp function (called when a response
16194 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016195
16196 @param pWDICtx: pointer to the WLAN DAL context
16197 pEventData: pointer to the event information structure
16198
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 @see
16200 @return Result of the function call
16201*/
16202WDI_Status
16203WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016204(
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 WDI_ControlBlockType* pWDICtx,
16206 WDI_EventInfoType* pEventData
16207)
16208{
16209 WDI_Status wdiStatus;
16210 eHalStatus halStatus;
16211 WDI_FlushAcRspCb wdiFlushAcRspCb;
16212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16213
16214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 -------------------------------------------------------------------------*/
16217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16218 ( NULL == pEventData->pEventData))
16219 {
16220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 }
16225
16226 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16227
16228 /*-------------------------------------------------------------------------
16229 Extract response and send it to UMAC
16230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 wpalMemoryCopy( &halStatus,
16232 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 sizeof(halStatus));
16234
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016236
16237 /*Notify UMAC*/
16238 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16239
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016241}/*WDI_ProcessFlushAcRsp*/
16242
16243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016245 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016246
16247 @param pWDICtx: pointer to the WLAN DAL context
16248 pEventData: pointer to the event information structure
16249
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 @see
16251 @return Result of the function call
16252*/
16253WDI_Status
16254WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016255(
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 WDI_ControlBlockType* pWDICtx,
16257 WDI_EventInfoType* pEventData
16258)
16259{
16260 WDI_Status wdiStatus;
16261 eHalStatus halStatus;
16262 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16264
16265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 -------------------------------------------------------------------------*/
16268 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16269 ( NULL == pEventData->pEventData))
16270 {
16271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 }
16276
16277 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16278
16279 /*-------------------------------------------------------------------------
16280 Extract response and send it to UMAC
16281 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 wpalMemoryCopy( &halStatus,
16283 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 sizeof(halStatus));
16285
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016287
16288 /*Notify UMAC*/
16289 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16290
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292}/*WDI_ProcessBtAmpEventRsp*/
16293
16294
16295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016298
16299 @param pWDICtx: pointer to the WLAN DAL context
16300 pEventData: pointer to the event information structure
16301
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 @see
16303 @return Result of the function call
16304*/
16305WDI_Status
16306WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016307(
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 WDI_ControlBlockType* pWDICtx,
16309 WDI_EventInfoType* pEventData
16310)
16311{
16312 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16313 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16314 tAddStaSelfRspMsg halAddStaSelfRsp;
16315 WDI_AddStaParams wdiAddSTAParam = {0};
16316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16317
16318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 -------------------------------------------------------------------------*/
16321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16322 ( NULL == pEventData->pEventData))
16323 {
16324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016328 }
16329
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16332
16333 /*-------------------------------------------------------------------------
16334 Extract response and send it to UMAC
16335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16337 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16339
16340
Jeff Johnsone7245742012-09-05 17:12:55 -070016341 wdiAddSTASelfParams.wdiStatus =
16342 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016343
Jeff Johnsone7245742012-09-05 17:12:55 -070016344 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016346 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016348 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16350
16351 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16352 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16353 WDI_MAC_ADDR_LEN);
16354
16355
16356#ifdef HAL_SELF_STA_PER_BSS
16357
16358 /* At this point add the self-STA */
16359
16360 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16361 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16362 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16363
16364 //all DPU indices are the same for self STA
16365
16366 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16369 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16370 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16371 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16372 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16373
16374 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16375 WDI_MAC_ADDR_LEN);
16376
16377 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16378 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16379
Jeff Johnsone7245742012-09-05 17:12:55 -070016380 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16382 {
16383 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16384 }
16385#endif
16386
16387 /*Notify UMAC*/
16388 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16389
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016391}/*WDI_ProcessAddSTASelfRsp*/
16392
16393
16394
16395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016396 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016398
16399 @param pWDICtx: pointer to the WLAN DAL context
16400 pEventData: pointer to the event information structure
16401
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 @see
16403 @return Result of the function call
16404*/
16405WDI_Status
16406WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016407(
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 WDI_ControlBlockType* pWDICtx,
16409 WDI_EventInfoType* pEventData
16410)
16411{
16412 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16413 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16414 tDelStaSelfRspParams delStaSelfRspParams;
16415 wpt_uint8 ucStaIdx;
16416
16417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16418
16419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 -------------------------------------------------------------------------*/
16422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16423 ( NULL == pEventData->pEventData))
16424 {
16425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430
16431 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16432
16433 /*-------------------------------------------------------------------------
16434 Extract response and send it to UMAC
16435 -------------------------------------------------------------------------*/
16436
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 (wpt_uint8*)pEventData->pEventData,
16439 sizeof(tDelStaSelfRspParams));
16440
Jeff Johnsone7245742012-09-05 17:12:55 -070016441 wdiDelStaSelfRspParams.wdiStatus =
16442 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016443
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16446 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16447 {
16448 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 delStaSelfRspParams.selfMacAddr,
16451 &ucStaIdx);
16452 if(WDI_STATUS_E_FAILURE == wdiStatus)
16453 {
16454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016455 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016458 }
16459 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16460 }
16461
16462 /*Notify UMAC*/
16463 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16464
16465 return WDI_STATUS_SUCCESS;
16466}
16467
Jeff Johnsone7245742012-09-05 17:12:55 -070016468#ifdef FEATURE_OEM_DATA_SUPPORT
16469/**
16470 @brief Start Oem Data Rsp function (called when a
16471 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016472
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 @param pWDICtx: pointer to the WLAN DAL context
16474 pEventData: pointer to the event information structure
16475
16476 @see
16477 @return Result of the function call
16478*/
16479#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16480
16481WDI_Status
16482WDI_ProcessStartOemDataRsp
16483(
16484 WDI_ControlBlockType* pWDICtx,
16485 WDI_EventInfoType* pEventData
16486)
16487{
16488 WDI_oemDataRspCb wdiOemDataRspCb;
16489 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16490 tStartOemDataRspParams* halStartOemDataRspParams;
16491
16492 /*-------------------------------------------------------------------------
16493 Sanity check
16494 -------------------------------------------------------------------------*/
16495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16496 ( NULL == pEventData->pEventData))
16497 {
16498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016499 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 WDI_ASSERT(0);
16501 return WDI_STATUS_E_FAILURE;
16502 }
16503
16504 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16505
16506 /*-------------------------------------------------------------------------
16507 Extract response and send it to UMAC
16508 -------------------------------------------------------------------------*/
16509 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16510
16511
16512 //It is the responsibility of the application code to check for failure
16513 //conditions!
16514
16515 //Allocate memory for WDI OEM DATA RSP structure
16516 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16517
16518 if(NULL == wdiOemDataRspParams)
16519 {
16520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16521 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16522 pWDICtx, pEventData, pEventData->pEventData);
16523 WDI_ASSERT(0);
16524 return WDI_STATUS_E_FAILURE;
16525 }
16526
16527 /* Populate WDI structure members */
16528 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16529
16530 /*Notify UMAC*/
16531 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16532
16533 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16534 wpalMemoryFree(wdiOemDataRspParams);
16535
16536 return WDI_STATUS_SUCCESS;
16537}/*WDI_PrcoessStartOemDataRsp*/
16538#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016539
16540/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016542===========================================================================*/
16543
16544/**
16545 @brief Process Channel Switch Rsp function (called when a response
16546 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
16548 @param pWDICtx: pointer to the WLAN DAL context
16549 pEventData: pointer to the event information structure
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 @see
16552 @return Result of the function call
16553*/
16554WDI_Status
16555WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016556(
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 WDI_ControlBlockType* pWDICtx,
16558 WDI_EventInfoType* pEventData
16559)
16560{
16561 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16562 WDI_SwitchChRspCb wdiChSwitchRspCb;
16563 tSwitchChannelRspParams halSwitchChannelRsp;
16564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16565
16566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 -------------------------------------------------------------------------*/
16569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16570 ( NULL == pEventData->pEventData))
16571 {
16572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 }
16577
16578 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16579
16580 /*-------------------------------------------------------------------------
16581 Extract response and send it to UMAC
16582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 (wpt_uint8*)pEventData->pEventData,
16585 sizeof(halSwitchChannelRsp));
16586
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wdiSwitchChRsp.wdiStatus =
16588 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16590
16591#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016593#endif
16594
16595 /*Notify UMAC*/
16596 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16597
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016599}/*WDI_ProcessChannelSwitchRsp*/
16600
16601
16602/**
16603 @brief Process Config STA Rsp function (called when a response
16604 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016605
16606 @param pWDICtx: pointer to the WLAN DAL context
16607 pEventData: pointer to the event information structure
16608
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 @see
16610 @return Result of the function call
16611*/
16612WDI_Status
16613WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016614(
Jeff Johnson295189b2012-06-20 16:38:30 -070016615 WDI_ControlBlockType* pWDICtx,
16616 WDI_EventInfoType* pEventData
16617)
16618{
16619 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16620 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16621 WDI_AddStaParams wdiAddSTAParam;
16622
16623 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016625
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16628
16629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 -------------------------------------------------------------------------*/
16632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16633 ( NULL == pEventData->pEventData))
16634 {
16635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 }
16640
16641 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16642
16643 /*-------------------------------------------------------------------------
16644 Extract response and send it to UMAC
16645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16647 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 sizeof(halConfigStaRsp.configStaRspParams));
16649
16650
16651 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16652 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16653 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16654 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16655 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16656
16657 /* MAC Address of STA - take from cache as it does not come back in the
16658 response*/
16659 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016662
16663 wdiCfgSTAParams.wdiStatus =
16664 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016665
16666 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16667 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16668 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16669
16670 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16671 {
16672 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16673 {
16674 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16677 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016678
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 wdiAddSTAParam.ucHTCapable =
16683 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16684 wdiAddSTAParam.ucStaType =
16685 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16686
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16689 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016691
16692 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16693 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16694 WDI_MAC_ADDR_LEN);
16695
16696 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16697 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16698 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699
16700 if ( NULL == pBSSSes )
16701 {
16702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16703 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016704
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 }
16708
16709 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 halConfigStaRsp.configStaRspParams.ucBcastSig;
16718 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16719 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16722 }
16723 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16724 {
16725 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16726
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 halConfigStaRsp.configStaRspParams.ucUcastSig;
16741 }
16742 }
16743
16744 /*Notify UMAC*/
16745 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16746
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016748}/*WDI_ProcessConfigStaRsp*/
16749
16750
16751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016754
16755 @param pWDICtx: pointer to the WLAN DAL context
16756 pEventData: pointer to the event information structure
16757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 @see
16759 @return Result of the function call
16760*/
16761WDI_Status
16762WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016763(
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_ControlBlockType* pWDICtx,
16765 WDI_EventInfoType* pEventData
16766)
16767{
16768 WDI_Status wdiStatus;
16769 eHalStatus halStatus;
16770 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16771
16772 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16775
16776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 -------------------------------------------------------------------------*/
16779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16780 ( NULL == pEventData->pEventData))
16781 {
16782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 }
16787
16788 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16789
16790 wpalMutexAcquire(&pWDICtx->wptMutex);
16791
16792 /*If the link is being transitioned to idle - the BSS is to be deleted
16793 - this type of ending a session is possible when UMAC has failed an
16794 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16797 {
16798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16802 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16803 &pBSSSes);
16804
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 /*-----------------------------------------------------------------------
16806 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 -----------------------------------------------------------------------*/
16809 if ( NULL == pBSSSes )
16810 {
16811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16812 "Set link response received outside association session");
16813 }
16814 else
16815 {
16816 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16817 will be del BSS coming after this to stop the beaconing & cleaning up the
16818 sessions*/
16819 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16820 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16821 {
16822 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 -----------------------------------------------------------------------*/
16825 WDI_DeleteSession(pWDICtx, pBSSSes);
16826
16827 /*-----------------------------------------------------------------------
16828 Check to see if this association is in progress - if so disable the
16829 flag as this has ended
16830 -----------------------------------------------------------------------*/
16831 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 /*Association no longer in progress */
16834 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16835 /*Association no longer in progress - prepare pending assoc for processing*/
16836 WDI_DequeueAssocRequest(pWDICtx);
16837 }
16838 }
16839 }
16840 }
16841 /* If the link state has been set to POST ASSOC, reset the "association in
16842 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16845 {
16846 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16847 WDI_DequeueAssocRequest(pWDICtx);
16848 }
16849
16850 wpalMutexRelease(&pWDICtx->wptMutex);
16851
16852 /*-------------------------------------------------------------------------
16853 Extract response and send it to UMAC
16854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016855 wpalMemoryCopy( &halStatus,
16856 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 sizeof(halStatus));
16858
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016860
16861 /*Notify UMAC*/
16862 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16863
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016865}/*WDI_ProcessSetLinkStateRsp*/
16866
16867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016868 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016870
16871 @param pWDICtx: pointer to the WLAN DAL context
16872 pEventData: pointer to the event information structure
16873
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 @see
16875 @return Result of the function call
16876*/
16877WDI_Status
16878WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016879(
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ControlBlockType* pWDICtx,
16881 WDI_EventInfoType* pEventData
16882)
16883{
16884 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16885 WDI_GetStatsRspCb wdiGetStatsRspCb;
16886 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016887
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16889
16890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 -------------------------------------------------------------------------*/
16893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16894 ( NULL == pEventData->pEventData))
16895 {
16896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 }
16901
16902 /*-------------------------------------------------------------------------
16903 Extract response and send it to UMAC
16904 -------------------------------------------------------------------------*/
16905 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16906
16907 /*allocate the stats response buffer */
16908 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16909 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16910 + sizeof(WDI_GetStatsRspParamsType));
16911
16912 if(NULL == wdiGetStatsRsp)
16913 {
16914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16915 "Failed to allocate memory in Get Stats Response %x %x %x ",
16916 pWDICtx, pEventData, pEventData->pEventData);
16917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016919 }
16920
16921 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16922
16923 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16924 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16925 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16926 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16927 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16928 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16929
16930 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16931 wpalMemoryCopy(wdiGetStatsRsp + 1,
16932 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16933 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16934
16935 /*Notify UMAC*/
16936 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16937
16938 wpalMemoryFree(wdiGetStatsRsp);
16939
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941}/*WDI_ProcessGetStatsRsp*/
16942
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016943#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16944/**
16945 @brief Process Get Roam Rssi Rsp function (called when a response is
16946 being received over the bus from HAL)
16947
16948 @param pWDICtx: pointer to the WLAN DAL context
16949 pEventData: pointer to the event information structure
16950
16951 @see
16952 @return Result of the function call
16953*/
16954WDI_Status
16955WDI_ProcessGetRoamRssiRsp
16956(
16957 WDI_ControlBlockType* pWDICtx,
16958 WDI_EventInfoType* pEventData
16959)
16960{
16961 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16962 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16963 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16965
16966 /*-------------------------------------------------------------------------
16967 Sanity check
16968 -------------------------------------------------------------------------*/
16969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16970 ( NULL == pEventData->pEventData))
16971 {
16972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16973 "%s: Invalid parameters", __func__);
16974 WDI_ASSERT(0);
16975 return WDI_STATUS_E_FAILURE;
16976 }
16977
16978 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16979 if(NULL == wdiGetRoamRssiRspCb)
16980 {
16981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16982 "%s: call back function is NULL", __func__);
16983 WDI_ASSERT(0);
16984 return WDI_STATUS_E_FAILURE;
16985 }
16986
16987 /*-------------------------------------------------------------------------
16988 Extract response and send it to UMAC
16989 -------------------------------------------------------------------------*/
16990 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16991 pEventData->pEventData,
16992 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16993
16994 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16995 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16996 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16997
16998 /*Notify UMAC*/
16999 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17000
17001 return WDI_STATUS_SUCCESS;
17002}/*WDI_ProcessGetRoamRssiRsp*/
17003#endif
17004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005
17006/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017009
17010 @param pWDICtx: pointer to the WLAN DAL context
17011 pEventData: pointer to the event information structure
17012
Jeff Johnson295189b2012-06-20 16:38:30 -070017013 @see
17014 @return Result of the function call
17015*/
17016WDI_Status
17017WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017018(
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 WDI_ControlBlockType* pWDICtx,
17020 WDI_EventInfoType* pEventData
17021)
17022{
17023 WDI_Status wdiStatus;
17024 eHalStatus halStatus;
17025 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17027
17028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 -------------------------------------------------------------------------*/
17031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17032 ( NULL == pEventData->pEventData))
17033 {
17034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 }
17039
17040 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17041
17042 /*-------------------------------------------------------------------------
17043 Extract response and send it to UMAC
17044 -------------------------------------------------------------------------*/
17045 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017047
17048 /*Notify UMAC*/
17049 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17050
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017052}/*WDI_ProcessUpdateCfgRsp*/
17053
17054
17055
17056/**
17057 @brief Process Add BA Rsp function (called when a response
17058 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017059
17060 @param pWDICtx: pointer to the WLAN DAL context
17061 pEventData: pointer to the event information structure
17062
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 @see
17064 @return Result of the function call
17065*/
17066WDI_Status
17067WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017068(
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 WDI_ControlBlockType* pWDICtx,
17070 WDI_EventInfoType* pEventData
17071)
17072{
17073 WDI_AddBARspCb wdiAddBARspCb;
17074
17075 tAddBARspParams halAddBARsp;
17076 WDI_AddBARspinfoType wdiAddBARsp;
17077
17078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17079
17080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 -------------------------------------------------------------------------*/
17083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17084 ( NULL == pEventData->pEventData))
17085 {
17086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 }
17091
17092 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17093
17094 /*-------------------------------------------------------------------------
17095 Extract response and send it to UMAC
17096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017097 wpalMemoryCopy( &halAddBARsp,
17098 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 sizeof(halAddBARsp));
17100
17101 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17102
Jeff Johnson43971f52012-07-17 12:26:56 -070017103 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 {
17105 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17106 }
17107
17108 /*Notify UMAC*/
17109 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17110
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017112}/*WDI_ProcessAddSessionBARsp*/
17113
17114/**
17115 @brief Process Add BA Rsp function (called when a response
17116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017117
17118 @param pWDICtx: pointer to the WLAN DAL context
17119 pEventData: pointer to the event information structure
17120
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 @see
17122 @return Result of the function call
17123*/
17124WDI_Status
17125WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017126(
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 WDI_ControlBlockType* pWDICtx,
17128 WDI_EventInfoType* pEventData
17129)
17130{
17131 WDI_TriggerBARspCb wdiTriggerBARspCb;
17132
17133 tTriggerBARspParams* halTriggerBARsp;
17134 tTriggerBaRspCandidate* halBaCandidate;
17135 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17136 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17137 wpt_uint16 index;
17138 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017139 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17141
17142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 -------------------------------------------------------------------------*/
17145 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17146 ( NULL == pEventData->pEventData))
17147 {
17148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 }
17153
17154 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17155
17156 /*-------------------------------------------------------------------------
17157 Extract response and send it to UMAC
17158 -------------------------------------------------------------------------*/
17159 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17160
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017161 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17162
17163 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17164 {
17165 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017168
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017169 if(NULL == wdiTriggerBARsp)
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17172 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17173 pWDICtx, pEventData, pEventData->pEventData);
17174 WDI_ASSERT(0);
17175 return WDI_STATUS_E_FAILURE;
17176 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017177
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017178 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17179
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17183
17184 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17185 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17186
17187 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17188 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17191 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17192 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017195 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17197 }
17198 wdiTriggerBARspCandidate++;
17199 halBaCandidate++;
17200 }
17201 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017202 else
17203 {
17204 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17205
17206 if(NULL == wdiTriggerBARsp)
17207 {
17208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17209 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17210 pWDICtx, pEventData, pEventData->pEventData);
17211 WDI_ASSERT(0);
17212 return WDI_STATUS_E_FAILURE;
17213 }
17214
17215 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17216
17217 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017218
17219 /*Notify UMAC*/
17220 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17221
17222 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017224}/*WDI_ProcessAddSessionBARsp*/
17225
17226/**
17227 @brief Process Update Beacon Params Rsp function (called when a response
17228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017229
17230 @param pWDICtx: pointer to the WLAN DAL context
17231 pEventData: pointer to the event information structure
17232
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 @see
17234 @return Result of the function call
17235*/
17236WDI_Status
17237WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017238(
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 WDI_ControlBlockType* pWDICtx,
17240 WDI_EventInfoType* pEventData
17241)
17242{
17243 WDI_Status wdiStatus;
17244 eHalStatus halStatus;
17245 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17247
17248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 -------------------------------------------------------------------------*/
17251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17252 ( NULL == pEventData->pEventData))
17253 {
17254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 }
17259
17260 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17261
17262 /*-------------------------------------------------------------------------
17263 Extract response and send it to UMAC
17264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017265 wpalMemoryCopy( &halStatus,
17266 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 sizeof(halStatus));
17268
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017270
17271 /*Notify UMAC*/
17272 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17273
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017275}/*WDI_ProcessUpdateBeaconParamsRsp*/
17276
17277/**
17278 @brief Process Send Beacon template Rsp function (called when a response
17279 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017280
17281 @param pWDICtx: pointer to the WLAN DAL context
17282 pEventData: pointer to the event information structure
17283
Jeff Johnson295189b2012-06-20 16:38:30 -070017284 @see
17285 @return Result of the function call
17286*/
17287WDI_Status
17288WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017289(
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 WDI_ControlBlockType* pWDICtx,
17291 WDI_EventInfoType* pEventData
17292)
17293{
17294 WDI_Status wdiStatus;
17295 eHalStatus halStatus;
17296 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17298
17299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017301 -------------------------------------------------------------------------*/
17302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17303 ( NULL == pEventData->pEventData))
17304 {
17305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 }
17310
17311 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17312
17313 /*-------------------------------------------------------------------------
17314 Extract response and send it to UMAC
17315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017316 wpalMemoryCopy( &halStatus,
17317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 sizeof(halStatus));
17319
Jeff Johnsone7245742012-09-05 17:12:55 -070017320 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017321
17322 /*Notify UMAC*/
17323 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17324
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017326}/*WDI_ProcessSendBeaconParamsRsp*/
17327
Jeff Johnsone7245742012-09-05 17:12:55 -070017328
Jeff Johnson295189b2012-06-20 16:38:30 -070017329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017332
17333 @param pWDICtx: pointer to the WLAN DAL context
17334 pEventData: pointer to the event information structure
17335
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 @see
17337 @return Result of the function call
17338*/
17339WDI_Status
17340WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017341(
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 WDI_ControlBlockType* pWDICtx,
17343 WDI_EventInfoType* pEventData
17344)
17345{
17346 WDI_Status wdiStatus;
17347 eHalStatus halStatus;
17348 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17350
17351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 -------------------------------------------------------------------------*/
17354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17355 ( NULL == pEventData->pEventData))
17356 {
17357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 }
17362
17363 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17364
17365 /*-------------------------------------------------------------------------
17366 Extract response and send it to UMAC
17367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 wpalMemoryCopy( &halStatus,
17369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 sizeof(halStatus));
17371
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017373
17374 /*Notify UMAC*/
17375 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17376
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017378}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17379
17380 /**
17381 @brief Process Set Max Tx Power Rsp function (called when a response
17382 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017383
17384 @param pWDICtx: pointer to the WLAN DAL context
17385 pEventData: pointer to the event information structure
17386
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 @see
17388 @return Result of the function call
17389*/
17390WDI_Status
17391WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017392(
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 WDI_ControlBlockType* pWDICtx,
17394 WDI_EventInfoType* pEventData
17395)
17396{
17397 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017398
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017400
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17403
17404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 -------------------------------------------------------------------------*/
17407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17408 ( NULL == pEventData->pEventData))
17409 {
17410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 }
17415
17416 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17417
17418 /*-------------------------------------------------------------------------
17419 Extract response and send it to UMAC
17420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17422 pEventData->pEventData,
17423 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017424
17425 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17426 {
17427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17428 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 }
17432
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017434 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017435 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017436
17437 /*Notify UMAC*/
17438 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17439
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017441}
17442
schangd82195a2013-03-13 18:41:24 -070017443 /**
17444 @brief Process Set Tx Power Rsp function (called when a response
17445 is being received over the bus from HAL)
17446
17447 @param pWDICtx: pointer to the WLAN DAL context
17448 pEventData: pointer to the event information structure
17449
17450 @see
17451 @return Result of the function call
17452*/
17453WDI_Status
17454WDI_ProcessSetTxPowerRsp
17455(
17456 WDI_ControlBlockType* pWDICtx,
17457 WDI_EventInfoType* pEventData
17458)
17459{
17460 tSetTxPwrRspMsg halTxpowerrsp;
17461 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17462 WDA_SetTxPowerRspCb wdiReqStatusCb;
17463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17464
17465 /*-------------------------------------------------------------------------
17466 Sanity check
17467 -------------------------------------------------------------------------*/
17468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17469 ( NULL == pEventData->pEventData))
17470 {
17471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17472 "%s: Invalid parameters", __func__);
17473 WDI_ASSERT(0);
17474 return WDI_STATUS_E_FAILURE;
17475 }
17476
17477 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17478
17479 /*-------------------------------------------------------------------------
17480 Extract response and send it to UMAC
17481 -------------------------------------------------------------------------*/
17482 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17483 pEventData->pEventData,
17484 sizeof(halTxpowerrsp.setTxPwrRspParams));
17485
17486 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17487 {
17488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17489 "Error status returned in Set Tx Power Response ");
17490 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17491 return WDI_STATUS_E_FAILURE;
17492 }
17493
17494 wdiSetTxPowerRspMsg.wdiStatus =
17495 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17496
17497 /*Notify UMAC*/
17498 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17499
17500 return WDI_STATUS_SUCCESS;
17501}
17502
Jeff Johnson295189b2012-06-20 16:38:30 -070017503/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017505 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017506
17507 @param pWDICtx: pointer to the WLAN DAL context
17508 pEventData: pointer to the event information structure
17509
Jeff Johnson295189b2012-06-20 16:38:30 -070017510 @see
17511 @return Result of the function call
17512*/
17513WDI_Status
17514WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017515(
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 WDI_ControlBlockType* pWDICtx,
17517 WDI_EventInfoType* pEventData
17518)
17519{
17520 WDI_Status wdiStatus;
17521 eHalStatus halStatus;
17522 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17524
17525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 -------------------------------------------------------------------------*/
17528 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17529 ( NULL == pEventData->pEventData))
17530 {
17531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 }
17536
17537 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17538
17539 /*-------------------------------------------------------------------------
17540 Extract response and send it to UMAC
17541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 wpalMemoryCopy( &halStatus,
17543 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 sizeof(halStatus));
17545
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017547
17548 /*Notify UMAC*/
17549 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17550
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017552}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017556
17557 @param pWDICtx: pointer to the WLAN DAL context
17558 pEventData: pointer to the event information structure
17559
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 @see
17561 @return Result of the function call
17562*/
17563WDI_Status
17564WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017565(
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 WDI_ControlBlockType* pWDICtx,
17567 WDI_EventInfoType* pEventData
17568)
17569{
17570 WDI_Status wdiStatus;
17571 eHalStatus halStatus;
17572 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017573 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17575
17576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 -------------------------------------------------------------------------*/
17579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17580 ( NULL == pEventData->pEventData))
17581 {
17582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017586 }
17587
17588 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17589
17590 /*-------------------------------------------------------------------------
17591 Extract response and send it to UMAC
17592 -------------------------------------------------------------------------*/
17593 halStatus = *((eHalStatus*)pEventData->pEventData);
17594
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017596
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017597 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17598 * Other module states are taken care by PMC.
17599 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17600 */
17601 if (wdiStatus != WDI_STATUS_SUCCESS) {
17602
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17604 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17605 halStatus);
17606 /* Call Back is not required as we are putting the DXE in FULL
17607 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017608 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17609
17610 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17612 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17613 WDI_ASSERT(0);
17614 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017615 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 /*Notify UMAC*/
17617 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17618
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017620}/*WDI_ProcessEnterImpsRsp*/
17621
17622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017625
17626 @param pWDICtx: pointer to the WLAN DAL context
17627 pEventData: pointer to the event information structure
17628
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 @see
17630 @return Result of the function call
17631*/
17632WDI_Status
17633WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017634(
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 WDI_ControlBlockType* pWDICtx,
17636 WDI_EventInfoType* pEventData
17637)
17638{
17639 WDI_Status wdiStatus;
17640 eHalStatus halStatus;
17641 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017642 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17644
17645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 -------------------------------------------------------------------------*/
17648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17649 ( NULL == pEventData->pEventData))
17650 {
17651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 }
17656
17657 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17658
17659 /*-------------------------------------------------------------------------
17660 Extract response and send it to UMAC
17661 -------------------------------------------------------------------------*/
17662 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017664
17665 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017666 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17667 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17668 {
17669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17670 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17671 WDI_ASSERT(0);
17672 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 /*Notify UMAC*/
17674 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17675
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017677}/*WDI_ProcessExitImpsRsp*/
17678
17679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017682
17683 @param pWDICtx: pointer to the WLAN DAL context
17684 pEventData: pointer to the event information structure
17685
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 @see
17687 @return Result of the function call
17688*/
17689WDI_Status
17690WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017691(
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ControlBlockType* pWDICtx,
17693 WDI_EventInfoType* pEventData
17694)
17695{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017696 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17697 tHalEnterBmpsRspParams halEnterBmpsRsp;
17698 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17699 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017700 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17702
17703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 -------------------------------------------------------------------------*/
17706 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17707 ( NULL == pEventData->pEventData))
17708 {
17709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 }
17714
Jeff Johnson295189b2012-06-20 16:38:30 -070017715 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017716 Extract response and send it to UMAC
17717 -------------------------------------------------------------------------*/
17718 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17719 {
17720 wpalMemoryCopy( &halEnterBmpsRsp,
17721 pEventData->pEventData,
17722 sizeof(halEnterBmpsRsp));
17723
17724 //Used to print debug message
17725 halStatus = halEnterBmpsRsp.status;
17726 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17727 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17728 }
17729 else
17730 {
17731 halStatus = *((eHalStatus*)pEventData->pEventData);
17732 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17733 }
17734
17735 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017736
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017737 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17738 * Other module states are taken care by PMC.
17739 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17740 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017741 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17742 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017745 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17746 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017747 /* Call Back is not required as we are putting the DXE in FULL
17748 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017749 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17750 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17751 {
17752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17753 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17754 WDI_ASSERT(0);
17755 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017756 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017757 }
17758
Jeff Johnson295189b2012-06-20 16:38:30 -070017759 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017760 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017761
Jeff Johnsone7245742012-09-05 17:12:55 -070017762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017763}/*WDI_ProcessEnterBmpsRsp*/
17764
17765/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017766 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017768
17769 @param pWDICtx: pointer to the WLAN DAL context
17770 pEventData: pointer to the event information structure
17771
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 @see
17773 @return Result of the function call
17774*/
17775WDI_Status
17776WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017777(
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 WDI_ControlBlockType* pWDICtx,
17779 WDI_EventInfoType* pEventData
17780)
17781{
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 eHalStatus halStatus;
17783 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017784 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017785 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17786 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17788
17789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 -------------------------------------------------------------------------*/
17792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17793 ( NULL == pEventData->pEventData))
17794 {
17795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 }
17800
17801 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17802
17803 /*-------------------------------------------------------------------------
17804 Extract response and send it to UMAC
17805 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017806
17807 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17808 {
17809 wpalMemoryCopy( &halExitBmpsRsp,
17810 pEventData->pEventData,
17811 sizeof(halExitBmpsRsp));
17812
17813 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17814 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17815 }
17816 else
17817 {
17818 halStatus = *((eHalStatus*)pEventData->pEventData);
17819 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017821
17822 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017823 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17824 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17825 {
17826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17827 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17828 WDI_ASSERT(0);
17829 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17831
17832 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017833 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017834
Jeff Johnsone7245742012-09-05 17:12:55 -070017835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017836}/*WDI_ProcessExitBmpsRsp*/
17837
17838/**
17839 @brief Process Enter UAPSD Rsp function (called when a response
17840 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017841
17842 @param pWDICtx: pointer to the WLAN DAL context
17843 pEventData: pointer to the event information structure
17844
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 @see
17846 @return Result of the function call
17847*/
17848WDI_Status
17849WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017850(
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 WDI_ControlBlockType* pWDICtx,
17852 WDI_EventInfoType* pEventData
17853)
17854{
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017856 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017858 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17859
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17861
17862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 -------------------------------------------------------------------------*/
17865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17866 ( NULL == pEventData->pEventData))
17867 {
17868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 }
17873
17874 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17875
17876 /*-------------------------------------------------------------------------
17877 Extract response and send it to UMAC
17878 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017879 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17880 {
17881 wpalMemoryCopy( &halEnterUapsdRsp,
17882 pEventData->pEventData,
17883 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017884
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017885 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17886 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17887 }
17888 else
17889 {
17890 halStatus = *((eHalStatus*)pEventData->pEventData);
17891 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17892 }
17893
17894 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 {
17896 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17897 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17898 // the traffic to decide when to suspend the trigger frames when there is no traffic
17899 // activity on the trigger enabled ACs
17900 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17901
17902#ifdef WLAN_PERF
17903 // Increment the BD signature to refresh the fast path BD utilization
17904 pWDICtx->uBdSigSerialNum++;
17905#endif
17906 }
17907
17908 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017909 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017910
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017912}/*WDI_ProcessEnterUapsdRsp*/
17913
17914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017917
17918 @param pWDICtx: pointer to the WLAN DAL context
17919 pEventData: pointer to the event information structure
17920
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 @see
17922 @return Result of the function call
17923*/
17924WDI_Status
17925WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017926(
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 WDI_ControlBlockType* pWDICtx,
17928 WDI_EventInfoType* pEventData
17929)
17930{
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 eHalStatus halStatus;
17932 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017933 tHalExitUapsdRspParams halExitUapsdRsp;
17934 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17936
17937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 -------------------------------------------------------------------------*/
17940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17941 ( NULL == pEventData->pEventData))
17942 {
17943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 }
17948
17949 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17950
17951 /*-------------------------------------------------------------------------
17952 Extract response and send it to UMAC
17953 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017954 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17955 {
17956 wpalMemoryCopy( &halExitUapsdRsp,
17957 pEventData->pEventData,
17958 sizeof(halExitUapsdRsp));
17959
17960 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17961 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17962 }
17963 else
17964 {
17965 halStatus = *((eHalStatus*)pEventData->pEventData);
17966 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17967 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17969 // directly instead of the FW WQ.
17970 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17971
17972#ifdef WLAN_PERF
17973 // Increment the BD signature to refresh the fast path BD utilization
17974 pWDICtx->uBdSigSerialNum++;
17975#endif
17976
17977 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017978 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017979
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017981}/*WDI_ProcessExitUapsdRsp*/
17982
17983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017986
17987 @param pWDICtx: pointer to the WLAN DAL context
17988 pEventData: pointer to the event information structure
17989
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 @see
17991 @return Result of the function call
17992*/
17993WDI_Status
17994WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017995(
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 WDI_ControlBlockType* pWDICtx,
17997 WDI_EventInfoType* pEventData
17998)
17999{
18000 WDI_Status wdiStatus;
18001 eHalStatus halStatus;
18002 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18004
18005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 -------------------------------------------------------------------------*/
18008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18009 ( NULL == pEventData->pEventData))
18010 {
18011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 }
18016
18017 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18018
18019 /*-------------------------------------------------------------------------
18020 Extract response and send it to UMAC
18021 -------------------------------------------------------------------------*/
18022 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018024
18025 /*Notify UMAC*/
18026 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18027
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029}/*WDI_ProcessSetUapsdAcParamsRsp*/
18030
18031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018034
18035 @param pWDICtx: pointer to the WLAN DAL context
18036 pEventData: pointer to the event information structure
18037
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 @see
18039 @return Result of the function call
18040*/
18041WDI_Status
18042WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018043(
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ControlBlockType* pWDICtx,
18045 WDI_EventInfoType* pEventData
18046)
18047{
18048 WDI_Status wdiStatus;
18049 eHalStatus halStatus;
18050 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18052
18053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 -------------------------------------------------------------------------*/
18056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064
18065 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
18070 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018072
18073 /*Notify UMAC*/
18074 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018077}/*WDI_ProcessUpdateUapsdParamsRsp*/
18078
18079/**
18080 @brief Process Configure RXP filter Rsp function (called when a
18081 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018082
18083 @param pWDICtx: pointer to the WLAN DAL context
18084 pEventData: pointer to the event information structure
18085
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 @see
18087 @return Result of the function call
18088*/
18089WDI_Status
18090WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018091(
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ControlBlockType* pWDICtx,
18093 WDI_EventInfoType* pEventData
18094)
18095{
18096 WDI_Status wdiStatus;
18097 eHalStatus halStatus;
18098 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18100
18101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 -------------------------------------------------------------------------*/
18104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18105 ( NULL == pEventData->pEventData))
18106 {
18107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 }
18112
18113 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18114
18115 /*-------------------------------------------------------------------------
18116 Extract response and send it to UMAC
18117 -------------------------------------------------------------------------*/
18118 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018120
18121 /*Notify UMAC*/
18122 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18123
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018125}/*WDI_ProcessConfigureRxpFilterRsp*/
18126
18127/**
18128 @brief Process Set beacon filter Rsp function (called when a
18129 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018130
18131 @param pWDICtx: pointer to the WLAN DAL context
18132 pEventData: pointer to the event information structure
18133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 @see
18135 @return Result of the function call
18136*/
18137WDI_Status
18138WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018139(
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 WDI_ControlBlockType* pWDICtx,
18141 WDI_EventInfoType* pEventData
18142)
18143{
18144 WDI_Status wdiStatus;
18145 eHalStatus halStatus;
18146 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18148
18149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 -------------------------------------------------------------------------*/
18152 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18153 ( NULL == pEventData->pEventData))
18154 {
18155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 }
18160
18161 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18162
18163 /*-------------------------------------------------------------------------
18164 Extract response and send it to UMAC
18165 -------------------------------------------------------------------------*/
18166 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018168
18169 /*Notify UMAC*/
18170 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18171
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018173}/*WDI_ProcessSetBeaconFilterRsp*/
18174
18175/**
18176 @brief Process remove beacon filter Rsp function (called when a
18177 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018178
18179 @param pWDICtx: pointer to the WLAN DAL context
18180 pEventData: pointer to the event information structure
18181
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 @see
18183 @return Result of the function call
18184*/
18185WDI_Status
18186WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018187(
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 WDI_ControlBlockType* pWDICtx,
18189 WDI_EventInfoType* pEventData
18190)
18191{
18192 WDI_Status wdiStatus;
18193 eHalStatus halStatus;
18194 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18196
18197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 -------------------------------------------------------------------------*/
18200 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18201 ( NULL == pEventData->pEventData))
18202 {
18203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 }
18208
18209 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18210
18211 /*-------------------------------------------------------------------------
18212 Extract response and send it to UMAC
18213 -------------------------------------------------------------------------*/
18214 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018215 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018216
18217 /*Notify UMAC*/
18218 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18219
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018221}/*WDI_ProcessRemBeaconFilterRsp*/
18222
18223/**
18224 @brief Process set RSSI thresholds Rsp function (called when a
18225 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018226
18227 @param pWDICtx: pointer to the WLAN DAL context
18228 pEventData: pointer to the event information structure
18229
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 @see
18231 @return Result of the function call
18232*/
18233WDI_Status
18234WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018235(
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 WDI_ControlBlockType* pWDICtx,
18237 WDI_EventInfoType* pEventData
18238)
18239{
18240 WDI_Status wdiStatus;
18241 eHalStatus halStatus;
18242 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18244
18245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018247 -------------------------------------------------------------------------*/
18248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18249 ( NULL == pEventData->pEventData))
18250 {
18251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018255 }
18256
18257 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18258
18259 /*-------------------------------------------------------------------------
18260 Extract response and send it to UMAC
18261 -------------------------------------------------------------------------*/
18262 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018264
18265 /*Notify UMAC*/
18266 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18267
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018269}/*WDI_ProcessSetRSSIThresoldsRsp*/
18270
18271/**
18272 @brief Process host offload Rsp function (called when a
18273 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018274
18275 @param pWDICtx: pointer to the WLAN DAL context
18276 pEventData: pointer to the event information structure
18277
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 @see
18279 @return Result of the function call
18280*/
18281WDI_Status
18282WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018283(
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 WDI_ControlBlockType* pWDICtx,
18285 WDI_EventInfoType* pEventData
18286)
18287{
18288 WDI_Status wdiStatus;
18289 eHalStatus halStatus;
18290 WDI_HostOffloadCb wdiHostOffloadCb;
18291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18292
18293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 -------------------------------------------------------------------------*/
18296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18297 ( NULL == pEventData->pEventData))
18298 {
18299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 }
18304
18305 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18306
18307 /*-------------------------------------------------------------------------
18308 Extract response and send it to UMAC
18309 -------------------------------------------------------------------------*/
18310 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312
18313 /*Notify UMAC*/
18314 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18315
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018317}/*WDI_ProcessHostOffloadRsp*/
18318
18319/**
18320 @brief Process keep alive Rsp function (called when a
18321 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018322
18323 @param pWDICtx: pointer to the WLAN DAL context
18324 pEventData: pointer to the event information structure
18325
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 @see
18327 @return Result of the function call
18328*/
18329WDI_Status
18330WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018331(
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 WDI_ControlBlockType* pWDICtx,
18333 WDI_EventInfoType* pEventData
18334)
18335{
18336 WDI_Status wdiStatus;
18337 eHalStatus halStatus;
18338 WDI_KeepAliveCb wdiKeepAliveCb;
18339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18341 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18342
18343
18344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 -------------------------------------------------------------------------*/
18347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18348 ( NULL == pEventData->pEventData))
18349 {
18350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 }
18355
Jeff Johnsone7245742012-09-05 17:12:55 -070018356 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18357
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 /*-------------------------------------------------------------------------
18359 Extract response and send it to UMAC
18360 -------------------------------------------------------------------------*/
18361 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018363
18364 /*Notify UMAC*/
18365 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18366
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018368}/*WDI_ProcessKeepAliveRsp*/
18369
18370/**
18371 @brief Process wowl add ptrn Rsp function (called when a
18372 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018373
18374 @param pWDICtx: pointer to the WLAN DAL context
18375 pEventData: pointer to the event information structure
18376
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 @see
18378 @return Result of the function call
18379*/
18380WDI_Status
18381WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018382(
Jeff Johnson295189b2012-06-20 16:38:30 -070018383 WDI_ControlBlockType* pWDICtx,
18384 WDI_EventInfoType* pEventData
18385)
18386{
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 eHalStatus halStatus;
18388 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018389 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18390 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18391
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18393
18394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 -------------------------------------------------------------------------*/
18397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18398 ( NULL == pEventData->pEventData))
18399 {
18400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 }
18405
18406 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18407
18408 /*-------------------------------------------------------------------------
18409 Extract response and send it to UMAC
18410 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018411 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18412 {
18413 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18414 pEventData->pEventData,
18415 sizeof(halAddWowlBcastPtrRsp));
18416
18417 wdiWowlAddBcPtrRsp.wdiStatus =
18418 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18419 }
18420 else
18421 {
18422 halStatus = *((eHalStatus*)pEventData->pEventData);
18423 wdiWowlAddBcPtrRsp.wdiStatus =
18424 WDI_HAL_2_WDI_STATUS(halStatus);
18425 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018426
18427 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018428 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018429
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018431}/*WDI_ProcessWowlAddBcPtrnRsp*/
18432
18433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018436
18437 @param pWDICtx: pointer to the WLAN DAL context
18438 pEventData: pointer to the event information structure
18439
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 @see
18441 @return Result of the function call
18442*/
18443WDI_Status
18444WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018445(
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 WDI_ControlBlockType* pWDICtx,
18447 WDI_EventInfoType* pEventData
18448)
18449{
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 eHalStatus halStatus;
18451 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018452 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18453 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18455
18456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 -------------------------------------------------------------------------*/
18459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18460 ( NULL == pEventData->pEventData))
18461 {
18462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 }
18467
18468 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18469
18470 /*-------------------------------------------------------------------------
18471 Extract response and send it to UMAC
18472 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018473 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18474 {
18475 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18476 pEventData->pEventData,
18477 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018478
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018479 wdiWowlDelBcstPtrRsp.wdiStatus =
18480 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18481 }
18482 else
18483 {
18484 halStatus = *((eHalStatus*)pEventData->pEventData);
18485 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18486 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018488 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018489
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491}/*WDI_ProcessWowlDelBcPtrnRsp*/
18492
18493/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018496
18497 @param pWDICtx: pointer to the WLAN DAL context
18498 pEventData: pointer to the event information structure
18499
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 @see
18501 @return Result of the function call
18502*/
18503WDI_Status
18504WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018505(
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 WDI_ControlBlockType* pWDICtx,
18507 WDI_EventInfoType* pEventData
18508)
18509{
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 eHalStatus halStatus;
18511 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018512 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18513 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18515
18516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 -------------------------------------------------------------------------*/
18519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18520 ( NULL == pEventData->pEventData))
18521 {
18522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 }
18527
18528 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18529
18530 /*-------------------------------------------------------------------------
18531 Extract response and send it to UMAC
18532 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018533 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18534 {
18535 wpalMemoryCopy( &halEnterWowlRspParams,
18536 (wpt_uint8*)pEventData->pEventData,
18537 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018539 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18540 wdiwowlEnterRsp.status =
18541 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18542 }
18543 else
18544 {
18545 halStatus = *((eHalStatus*)pEventData->pEventData);
18546 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18547 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018549 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018550
Jeff Johnsone7245742012-09-05 17:12:55 -070018551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018552}/*WDI_ProcessWowlEnterRsp*/
18553
18554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018557
18558 @param pWDICtx: pointer to the WLAN DAL context
18559 pEventData: pointer to the event information structure
18560
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 @see
18562 @return Result of the function call
18563*/
18564WDI_Status
18565WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018566(
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 WDI_ControlBlockType* pWDICtx,
18568 WDI_EventInfoType* pEventData
18569)
18570{
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 eHalStatus halStatus;
18572 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018573 tHalExitWowlRspParams halExitWowlRspParams;
18574 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18577
18578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 -------------------------------------------------------------------------*/
18581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18582 ( NULL == pEventData->pEventData))
18583 {
18584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 }
18589
18590 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18591
18592 /*-------------------------------------------------------------------------
18593 Extract response and send it to UMAC
18594 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018595 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18596 {
18597 wpalMemoryCopy( &halExitWowlRspParams,
18598 pEventData->pEventData,
18599 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018600
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018601 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18602 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18603
18604 }
18605 else
18606 {
18607 halStatus = *((eHalStatus*)pEventData->pEventData);
18608 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18609 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018611 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018612
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018614}/*WDI_ProcessWowlExitRsp*/
18615
18616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 (called when a response is being received over the bus
18619 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018620
18621 @param pWDICtx: pointer to the WLAN DAL context
18622 pEventData: pointer to the event information structure
18623
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 @see
18625 @return Result of the function call
18626*/
18627WDI_Status
18628WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018629(
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 WDI_ControlBlockType* pWDICtx,
18631 WDI_EventInfoType* pEventData
18632)
18633{
18634 WDI_Status wdiStatus;
18635 eHalStatus halStatus;
18636 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18638
18639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 -------------------------------------------------------------------------*/
18642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18643 ( NULL == pEventData->pEventData))
18644 {
18645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 }
18650
18651 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18652
18653 /*-------------------------------------------------------------------------
18654 Extract response and send it to UMAC
18655 -------------------------------------------------------------------------*/
18656 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018657 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018658
18659 /*Notify UMAC*/
18660 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18661
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018663}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18664
18665
18666/**
18667 @brief Process Nv download(called when a response
18668 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018669
18670 @param pWDICtx: pointer to the WLAN DAL context
18671 pEventData: pointer to the event information structure
18672
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 @see
18674 @return Result of the function call
18675*/
18676WDI_Status
18677WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018678(
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 WDI_ControlBlockType* pWDICtx,
18680 WDI_EventInfoType* pEventData
18681)
18682{
18683
18684 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18685 tHalNvImgDownloadRspParams halNvDownloadRsp;
18686 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18687
18688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 -------------------------------------------------------------------------*/
18691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18692 ( NULL == pEventData->pEventData))
18693 {
18694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 }
18699
18700 /*-------------------------------------------------------------------------
18701 Extract response and send it to UMAC
18702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 wpalMemoryCopy( &halNvDownloadRsp,
18704 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 sizeof(halNvDownloadRsp));
18706
18707 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18708
18709 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018710 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18711 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 {
18713 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 }
18716 else
18717 {
18718 /*Reset the Nv related global information in WDI context information */
18719 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18720 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18721 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18722 /*call WDA callback function for last fragment */
18723 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18724 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18725 }
18726
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018728}
18729#ifdef WLAN_FEATURE_VOWIFI_11R
18730/**
18731 @brief Process Add TSpec Rsp function (called when a response
18732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018733
18734 @param pWDICtx: pointer to the WLAN DAL context
18735 pEventData: pointer to the event information structure
18736
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 @see
18738 @return Result of the function call
18739*/
18740WDI_Status
18741WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018742(
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ControlBlockType* pWDICtx,
18744 WDI_EventInfoType* pEventData
18745)
18746{
18747 WDI_Status wdiStatus;
18748 tAggrAddTsRspParams aggrAddTsRsp;
18749 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18751
18752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 -------------------------------------------------------------------------*/
18755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18756 ( NULL == pEventData->pEventData))
18757 {
18758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 }
18763
18764 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18765
18766 /*-------------------------------------------------------------------------
18767 Extract response and send it to UMAC
18768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018769 wpalMemoryCopy( &aggrAddTsRsp,
18770 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 sizeof(aggrAddTsRsp));
18772
18773 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018774 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018775
18776 /*Notify UMAC*/
18777 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18778
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018780}/*WDI_ProcessAddTSpecRsp*/
18781#endif /* WLAN_FEATURE_VOWIFI_11R */
18782
18783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018786
18787 @param pWDICtx: pointer to the WLAN DAL context
18788 pEventData: pointer to the event information structure
18789
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 @see
18791 @return Result of the function call
18792*/
18793WDI_Status
18794WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018795(
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 WDI_ControlBlockType* pWDICtx,
18797 WDI_EventInfoType* pEventData
18798)
18799{
18800 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18801 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18802 tHalHostResumeRspParams hostResumeRspMsg;
18803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18804
18805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 -------------------------------------------------------------------------*/
18808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18809 ( NULL == pEventData->pEventData))
18810 {
18811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 }
18816
18817 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18818
18819 /*-------------------------------------------------------------------------
18820 Extract response and send it to UMAC
18821 -------------------------------------------------------------------------*/
18822
Jeff Johnsone7245742012-09-05 17:12:55 -070018823 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 (wpt_uint8*)pEventData->pEventData,
18825 sizeof(hostResumeRspMsg));
18826
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 wdiResumeRspParams.wdiStatus =
18828 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018829
18830 /*Notify UMAC*/
18831 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18832
18833 return WDI_STATUS_SUCCESS;
18834}
18835
18836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018837 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018838 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018839
18840 @param pWDICtx: pointer to the WLAN DAL context
18841 pEventData: pointer to the event information structure
18842
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 @see
18844 @return Result of the function call
18845*/
18846WDI_Status
18847WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018848(
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 WDI_ControlBlockType* pWDICtx,
18850 WDI_EventInfoType* pEventData
18851)
18852{
18853 WDI_Status wdiStatus;
18854 eHalStatus halStatus;
18855 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18857
18858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 -------------------------------------------------------------------------*/
18861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18862 ( NULL == pEventData->pEventData))
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018869
18870 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871
18872 /*-------------------------------------------------------------------------
18873 Extract response and send it to UMAC
18874 -------------------------------------------------------------------------*/
18875 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018877
18878 /*Notify UMAC*/
18879 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18880
Jeff Johnsone7245742012-09-05 17:12:55 -070018881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018882}/*WDI_ProcessSetTxPerTrackingRsp*/
18883
18884/*==========================================================================
18885 Indications from HAL
18886 ==========================================================================*/
18887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018888 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 indication of this kind is being received over the bus
18890 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018891
18892 @param pWDICtx: pointer to the WLAN DAL context
18893 pEventData: pointer to the event information structure
18894
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 @see
18896 @return Result of the function call
18897*/
18898WDI_Status
18899WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018900(
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 WDI_ControlBlockType* pWDICtx,
18902 WDI_EventInfoType* pEventData
18903)
18904{
18905 WDI_LowLevelIndType wdiInd;
18906 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18908
18909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 -------------------------------------------------------------------------*/
18912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18913 ( NULL == pEventData->pEventData))
18914 {
18915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 }
18920
18921 /*-------------------------------------------------------------------------
18922 Extract indication and send it to UMAC
18923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18925 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 sizeof(tHalRSSINotification));
18927
18928 /*Fill in the indication parameters*/
18929 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18930 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18931 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18932 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18933 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18934 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18935 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18936 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18937 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18938 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18939 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18940 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18941 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018942 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18943 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018944
ltimariu034f7d62013-01-24 18:54:33 -080018945 if ( pWDICtx->wdiLowLevelIndCB )
18946 {
18947 /*Notify UMAC of indication*/
18948 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18949 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018950
18951 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018952}/*WDI_ProcessLowRSSIInd*/
18953
18954
18955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 an indication of this kind is being received over the
18958 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018959
18960 @param pWDICtx: pointer to the WLAN DAL context
18961 pEventData: pointer to the event information structure
18962
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 @see
18964 @return Result of the function call
18965*/
18966WDI_Status
18967WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018968(
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 WDI_ControlBlockType* pWDICtx,
18970 WDI_EventInfoType* pEventData
18971)
18972{
18973 WDI_Status wdiStatus;
18974 eHalStatus halStatus;
18975 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018976 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18978
18979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 -------------------------------------------------------------------------*/
18982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18983 ( NULL == pEventData->pEventData))
18984 {
18985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018990 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 /*-------------------------------------------------------------------------
18992 Extract indication and send it to UMAC
18993 -------------------------------------------------------------------------*/
18994 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18995 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018997
18998 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019000 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19001 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019002 if ( pWDICtx->wdiLowLevelIndCB )
19003 {
19004 /*Notify UMAC*/
19005 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019007
19008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019009}/*WDI_ProcessMissedBeaconInd*/
19010
19011
19012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 an indication of this kind is being received over the
19015 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019016
19017 @param pWDICtx: pointer to the WLAN DAL context
19018 pEventData: pointer to the event information structure
19019
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 @see
19021 @return Result of the function call
19022*/
19023WDI_Status
19024WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019025(
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 WDI_ControlBlockType* pWDICtx,
19027 WDI_EventInfoType* pEventData
19028)
19029{
19030 WDI_Status wdiStatus;
19031 eHalStatus halStatus;
19032 WDI_LowLevelIndType wdiInd;
19033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19034
19035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019037 -------------------------------------------------------------------------*/
19038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19039 ( NULL == pEventData->pEventData))
19040 {
19041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 }
19046
19047 /*-------------------------------------------------------------------------
19048 Extract indication and send it to UMAC
19049 -------------------------------------------------------------------------*/
19050 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19051 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019053
19054 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 /* ! TO DO - fill in from HAL struct:
19057 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19058
ltimariu034f7d62013-01-24 18:54:33 -080019059 if ( pWDICtx->wdiLowLevelIndCB )
19060 {
19061 /*Notify UMAC*/
19062 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19063 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019064
19065 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019066}/*WDI_ProcessUnkAddrFrameInd*/
19067
19068
19069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 indication of this kind is being received over the bus
19072 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019073
19074 @param pWDICtx: pointer to the WLAN DAL context
19075 pEventData: pointer to the event information structure
19076
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 @see
19078 @return Result of the function call
19079*/
19080WDI_Status
19081WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019082(
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 WDI_ControlBlockType* pWDICtx,
19084 WDI_EventInfoType* pEventData
19085)
19086{
19087 WDI_LowLevelIndType wdiInd;
19088 tpSirMicFailureInd pHalMicFailureInd;
19089
19090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19091
19092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 -------------------------------------------------------------------------*/
19095 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19096 ( NULL == pEventData->pEventData))
19097 {
19098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019103
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19105 /*-------------------------------------------------------------------------
19106 Extract indication and send it to UMAC
19107 -------------------------------------------------------------------------*/
19108
19109 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19112 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19113 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19114 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19115 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19116 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19117 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19118 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 pHalMicFailureInd->info.keyId;
19125 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19126 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19127 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19128 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019129
19130 if ( pWDICtx->wdiLowLevelIndCB )
19131 {
19132 /*Notify UMAC*/
19133 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19134 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019135
19136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137}/*WDI_ProcessMicFailureInd*/
19138
19139
19140/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019141 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019142 an indication of this kind is being received over the
19143 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019144
19145 @param pWDICtx: pointer to the WLAN DAL context
19146 pEventData: pointer to the event information structure
19147
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 @see
19149 @return Result of the function call
19150*/
19151WDI_Status
19152WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019153(
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx,
19155 WDI_EventInfoType* pEventData
19156)
19157{
19158 WDI_Status wdiStatus;
19159 eHalStatus halStatus;
19160 WDI_LowLevelIndType wdiInd;
19161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19162
19163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 -------------------------------------------------------------------------*/
19166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19167 ( NULL == pEventData->pEventData))
19168 {
19169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 }
19174
19175 /*-------------------------------------------------------------------------
19176 Extract indication and send it to UMAC
19177 -------------------------------------------------------------------------*/
19178
19179 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19180 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019182
19183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19184 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019185
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19188 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019189
ltimariu034f7d62013-01-24 18:54:33 -080019190 if ( pWDICtx->wdiLowLevelIndCB )
19191 {
19192 /*Notify UMAC*/
19193 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019195
19196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197}/*WDI_ProcessFatalErrorInd*/
19198
19199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019200 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 an indication of this kind is being received over the
19202 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019203
19204 @param pWDICtx: pointer to the WLAN DAL context
19205 pEventData: pointer to the event information structure
19206
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 @see
19208 @return Result of the function call
19209*/
19210WDI_Status
19211WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019212(
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 WDI_ControlBlockType* pWDICtx,
19214 WDI_EventInfoType* pEventData
19215)
19216{
19217 tDeleteStaContextParams halDelSTACtx;
19218 WDI_LowLevelIndType wdiInd;
19219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19220
19221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019223 -------------------------------------------------------------------------*/
19224 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19225 ( NULL == pEventData->pEventData))
19226 {
19227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 }
19232
19233 /*-------------------------------------------------------------------------
19234 Extract indication and send it to UMAC
19235 -------------------------------------------------------------------------*/
19236
19237 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019238 wpalMemoryCopy( &halDelSTACtx,
19239 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019240 sizeof(halDelSTACtx));
19241
19242 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019243 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019244
19245 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19246 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19247 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19248 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19249
Jeff Johnsone7245742012-09-05 17:12:55 -070019250 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019254 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19255 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019256
ltimariu034f7d62013-01-24 18:54:33 -080019257 if ( pWDICtx->wdiLowLevelIndCB )
19258 {
19259 /*Notify UMAC*/
19260 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019262
19263 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019264}/*WDI_ProcessDelSTAInd*/
19265
19266/**
19267*@brief Process Coex Indication function (called when
19268 an indication of this kind is being received over the
19269 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019270
19271 @param pWDICtx: pointer to the WLAN DAL context
19272 pEventData: pointer to the event information structure
19273
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 @see
19275 @return Result of the function call
19276*/
19277WDI_Status
19278WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019279(
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 WDI_ControlBlockType* pWDICtx,
19281 WDI_EventInfoType* pEventData
19282)
19283{
19284 WDI_LowLevelIndType wdiInd;
19285 tCoexIndMsg halCoexIndMsg;
19286 wpt_uint32 index;
19287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19288
19289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 -------------------------------------------------------------------------*/
19292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19293 ( NULL == pEventData->pEventData ))
19294 {
19295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 }
19300
19301 /*-------------------------------------------------------------------------
19302 Extract indication and send it to UMAC
19303 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19305 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 sizeof(halCoexIndMsg.coexIndParams) );
19307
19308 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 wdiInd.wdiIndicationType = WDI_COEX_IND;
19310 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19312 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 }
19315
19316 // DEBUG
19317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19318 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19320 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19321 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19322 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19323 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019324
ltimariu034f7d62013-01-24 18:54:33 -080019325 if ( pWDICtx->wdiLowLevelIndCB )
19326 {
19327 /*Notify UMAC*/
19328 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19329 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019330
19331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332}/*WDI_ProcessCoexInd*/
19333
19334/**
19335*@brief Process Tx Complete Indication function (called when
19336 an indication of this kind is being received over the
19337 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019338
19339 @param pWDICtx: pointer to the WLAN DAL context
19340 pEventData: pointer to the event information structure
19341
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 @see
19343 @return Result of the function call
19344*/
19345WDI_Status
19346WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019347(
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 WDI_ControlBlockType* pWDICtx,
19349 WDI_EventInfoType* pEventData
19350)
19351{
19352 WDI_LowLevelIndType wdiInd;
19353 tTxComplIndMsg halTxComplIndMsg;
19354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19355
19356 /*-------------------------------------------------------------------------
19357 Sanity check
19358 -------------------------------------------------------------------------*/
19359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19360 ( NULL == pEventData->pEventData ))
19361 {
19362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 WDI_ASSERT( 0 );
19365 return WDI_STATUS_E_FAILURE;
19366 }
19367
19368 /*-------------------------------------------------------------------------
19369 Extract indication and send it to UMAC
19370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19372 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 sizeof(halTxComplIndMsg.txComplParams) );
19374
19375 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19377 wdiInd.wdiIndicationData.tx_complete_status
19378 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019379
ltimariu034f7d62013-01-24 18:54:33 -080019380 if ( pWDICtx->wdiLowLevelIndCB )
19381 {
19382 /*Notify UMAC*/
19383 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19384 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019385
19386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387}/*WDI_ProcessTxCompleteInd*/
19388
Jeff Johnson295189b2012-06-20 16:38:30 -070019389/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019390*@brief Process Noa Start Indication function (called when
19391 an indication of this kind is being received over the
19392 bus from HAL)
19393
19394 @param pWDICtx: pointer to the WLAN DAL context
19395 pEventData: pointer to the event information structure
19396
19397 @see
19398 @return Result of the function call
19399*/
19400WDI_Status
19401WDI_ProcessP2pNoaStartInd
19402(
19403 WDI_ControlBlockType* pWDICtx,
19404 WDI_EventInfoType* pEventData
19405)
19406{
19407 WDI_LowLevelIndType wdiInd;
19408 tNoaStartIndMsg halNoaStartIndMsg;
19409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19410
19411 /*-------------------------------------------------------------------------
19412 Sanity check
19413 -------------------------------------------------------------------------*/
19414 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19415 ( NULL == pEventData->pEventData ))
19416 {
19417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19418 "%s: Invalid parameters", __func__);
19419 WDI_ASSERT( 0 );
19420 return WDI_STATUS_E_FAILURE;
19421 }
19422
19423 /*-------------------------------------------------------------------------
19424 Extract indication and send it to UMAC
19425 -------------------------------------------------------------------------*/
19426 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19427 pEventData->pEventData,
19428 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19429
19430 /*Fill in the indication parameters*/
19431 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19432
19433 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19434 = halNoaStartIndMsg.noaStartIndParams.status;
19435
19436 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19437 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19438
19439 /*Notify UMAC*/
19440 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19441
19442 return WDI_STATUS_SUCCESS;
19443}/*WDI_ProcessNoaAttrInd*/
19444
19445/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019446*@brief Process Noa Attr Indication function (called when
19447 an indication of this kind is being received over the
19448 bus from HAL)
19449
19450 @param pWDICtx: pointer to the WLAN DAL context
19451 pEventData: pointer to the event information structure
19452
19453 @see
19454 @return Result of the function call
19455*/
19456WDI_Status
19457WDI_ProcessP2pNoaAttrInd
19458(
19459 WDI_ControlBlockType* pWDICtx,
19460 WDI_EventInfoType* pEventData
19461)
19462{
19463 WDI_LowLevelIndType wdiInd;
19464 tNoaAttrIndMsg halNoaAttrIndMsg;
19465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19466
19467 /*-------------------------------------------------------------------------
19468 Sanity check
19469 -------------------------------------------------------------------------*/
19470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19471 ( NULL == pEventData->pEventData ))
19472 {
19473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 WDI_ASSERT( 0 );
19476 return WDI_STATUS_E_FAILURE;
19477 }
19478
19479 /*-------------------------------------------------------------------------
19480 Extract indication and send it to UMAC
19481 -------------------------------------------------------------------------*/
19482 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19483 pEventData->pEventData,
19484 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19485
19486 /*Fill in the indication parameters*/
19487 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019488
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19490 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019491
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19493 = halNoaAttrIndMsg.noaAttrIndParams.index;
19494 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19495 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19496 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19497 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019498
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19500 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19501 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19502 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19503 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19504 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19505 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19506 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019507
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19509 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19510 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19511 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19512 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19513 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19514 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19515 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19516
ltimariu034f7d62013-01-24 18:54:33 -080019517 if ( pWDICtx->wdiLowLevelIndCB )
19518 {
19519 /*Notify UMAC*/
19520 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19521 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019522
19523 return WDI_STATUS_SUCCESS;
19524}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019525
19526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 an indication of this kind is being received over the
19529 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019530
19531 @param pWDICtx: pointer to the WLAN DAL context
19532 pEventData: pointer to the event information structure
19533
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 @see
19535 @return Result of the function call
19536*/
19537WDI_Status
19538WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019539(
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 WDI_ControlBlockType* pWDICtx,
19541 WDI_EventInfoType* pEventData
19542)
19543{
19544 WDI_LowLevelIndType wdiInd;
19545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019546
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 /*-------------------------------------------------------------------------
19548 Extract indication and send it to UMAC
19549 -------------------------------------------------------------------------*/
19550 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19552
ltimariu034f7d62013-01-24 18:54:33 -080019553 if ( pWDICtx->wdiLowLevelIndCB )
19554 {
19555 /*Notify UMAC*/
19556 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19557 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019558
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019560}/*WDI_ProcessTxPerHitInd*/
19561
Jeff Johnson295189b2012-06-20 16:38:30 -070019562/**
19563 @brief WDI_ProcessFTMCommandReq
19564 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019565
19566 @param pWDICtx: pointer to the WLAN DAL context
19567 pEventData: pointer to the event information structure
19568
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 @see
19570 @return Result of the function call
19571*/
19572WDI_Status
19573WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019574(
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 WDI_ControlBlockType* pWDICtx,
19576 WDI_EventInfoType* pEventData
19577)
19578{
19579 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19580 wpt_uint8 *ftmCommandBuffer = NULL;
19581 wpt_uint16 dataOffset;
19582 wpt_uint16 bufferSize;
19583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 -------------------------------------------------------------------------*/
19586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19587 ( NULL == pEventData->pEventData))
19588
19589 {
19590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 }
19595
19596 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19597
19598 /* Get MSG Buffer */
19599 WDI_GetMessageBuffer(pWDICtx,
19600 WDI_FTM_CMD_REQ,
19601 ftmCommandReq->bodyLength,
19602 &ftmCommandBuffer,
19603 &dataOffset,
19604 &bufferSize);
19605
19606 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19607 ftmCommandReq->FTMCommandBody,
19608 ftmCommandReq->bodyLength);
19609
19610 /* Send MSG */
19611 return WDI_SendMsg(pWDICtx,
19612 ftmCommandBuffer,
19613 bufferSize,
19614 pEventData->pCBfnc,
19615 pEventData->pUserData,
19616 WDI_FTM_CMD_RESP);
19617}
19618
19619/**
19620 @brief WDI_ProcessFTMCommandRsp
19621 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019622
19623 @param pWDICtx: pointer to the WLAN DAL context
19624 pEventData: pointer to the event information structure
19625
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 @see
19627 @return Result of the function call
19628*/
19629WDI_Status
19630WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019631(
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 WDI_ControlBlockType* pWDICtx,
19633 WDI_EventInfoType* pEventData
19634)
19635{
19636 WDI_FTMCommandRspCb ftmCMDRspCb;
19637 tProcessPttRspParams *ftmCMDRspData = NULL;
19638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19639
19640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 -------------------------------------------------------------------------*/
19643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19644 ( NULL == pEventData->pEventData))
19645 {
19646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 }
19651
19652 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19653
19654 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19655
Jeff Johnsone7245742012-09-05 17:12:55 -070019656 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19657 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19659
19660 /*Notify UMAC*/
19661 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19662
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019664}
Jeff Johnson295189b2012-06-20 16:38:30 -070019665/**
19666 @brief WDI_ProcessHalDumpCmdReq
19667 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019668
19669 @param pWDICtx: pointer to the WLAN DAL context
19670 pEventData: pointer to the event information structure
19671
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 @see
19673 @return Result of the function call
19674*/
19675WDI_Status
19676WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019677(
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_ControlBlockType* pWDICtx,
19679 WDI_EventInfoType* pEventData
19680)
19681{
19682 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19683 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19684 wpt_uint16 usDataOffset = 0;
19685 wpt_uint16 usSendSize = 0;
19686 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019688
19689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 -------------------------------------------------------------------------*/
19692 if (( NULL == pEventData ) ||
19693 ( NULL == pEventData->pEventData) ||
19694 ( NULL == pEventData->pCBfnc ))
19695 {
19696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 }
19701
19702 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19703 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19704
19705 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019712 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019714 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019716
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 /*-----------------------------------------------------------------------
19718 Get message buffer
19719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19722 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19725 {
19726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19727 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19728 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 }
19732
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 wpalMemoryCopy( pSendBuffer+usDataOffset,
19734 &halDumpCmdReqMsg.dumpCmdReqParams,
19735 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019736
19737 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
19740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19744 wdiHALDumpCmdRspCb, pEventData->pUserData,
19745 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019746}
19747
19748/**
19749 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 Process hal Dump Command Response from HAL, simply route to HDD
19751
19752 @param pWDICtx: pointer to the WLAN DAL context
19753 pEventData: pointer to the event information structure
19754
Jeff Johnson295189b2012-06-20 16:38:30 -070019755 @see
19756 @return Result of the function call
19757*/
19758WDI_Status
19759WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019760(
Jeff Johnson295189b2012-06-20 16:38:30 -070019761 WDI_ControlBlockType* pWDICtx,
19762 WDI_EventInfoType* pEventData
19763)
19764{
19765 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019766 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19768
19769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 -------------------------------------------------------------------------*/
19772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19773 ( NULL == pEventData->pEventData))
19774 {
19775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 }
19780
Jeff Johnsone7245742012-09-05 17:12:55 -070019781 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019782
19783 /*Initialize the WDI Response structure */
19784 wdiHALDumpCmdRsp.usBufferLen = 0;
19785 wdiHALDumpCmdRsp.pBuffer = NULL;
19786
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019787 wpalMemoryCopy( &halDumpCmdRspParams,
19788 pEventData->pEventData,
19789 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019790
19791 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019792 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019793
19794 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019795 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 {
19797 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019798 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19799 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19800
19801 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19802 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053019803 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019805
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 /*Notify UMAC*/
19807 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19808
19809 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19810 {
19811 /* Free the allocated buffer */
19812 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19813 }
19814 return WDI_STATUS_SUCCESS;
19815}
19816
19817/*==========================================================================
19818 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019819
Jeff Johnson295189b2012-06-20 16:38:30 -070019820 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019822==========================================================================*/
19823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019824 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019825 when it wishes to send up a notification like the ones
19826 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019827
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 wctsNotifyCBData: the callback data of the user
19833
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019835
19836 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019837*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019838void
Jeff Johnson295189b2012-06-20 16:38:30 -070019839WDI_NotifyMsgCTSCB
19840(
Jeff Johnsone7245742012-09-05 17:12:55 -070019841 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 WCTS_NotifyEventType wctsEvent,
19843 void* wctsNotifyCBData
19844)
19845{
Jeff Johnsone7245742012-09-05 17:12:55 -070019846 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19848
19849 if (NULL == pWDICtx )
19850 {
19851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019854 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 }
19856
19857 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19858 {
19859 /* callback presumably occurred after close */
19860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019861 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 }
19864
19865 if ( WCTS_EVENT_OPEN == wctsEvent )
19866 {
19867 /*Flag must be set atomically as it is checked from incoming request
19868 functions*/
19869 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019871
19872 /*Nothing to do - so try to dequeue any pending request that may have
19873 occurred while we were trying to establish this*/
19874 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019877 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 {
19879 /*Flag must be set atomically as it is checked from incoming request
19880 functions*/
19881 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019883
19884 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019885 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019886 wpalMutexRelease(&pWDICtx->wptMutex);
19887
19888 /*Notify that the Control Channel is closed */
19889 wpalEventSet(&pWDICtx->wctsActionEvent);
19890 }
19891
19892}/*WDI_NotifyMsgCTSCB*/
19893
19894
19895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019896 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 when it wishes to send up a packet received over the
19898 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019899
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019901
19902 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 pMsg: the packet
19904 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019905 wctsRxMsgCBData: the callback data of the user
19906
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019908
19909 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019910*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019911void
19912WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019913(
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 void* pMsg,
19916 wpt_uint32 uLen,
19917 void* wctsRxMsgCBData
19918)
19919{
Jeff Johnsone7245742012-09-05 17:12:55 -070019920 tHalMsgHeader *pHalMsgHeader;
19921 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19924
19925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 ( uLen < sizeof(tHalMsgHeader)))
19930 {
19931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 }
19936
19937 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19938 {
19939 /* callback presumably occurred after close */
19940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019941 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019942 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 }
19944
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 context - so no serialization is necessary here
19947 ! - revisit this assumption */
19948
19949 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19950
19951 if ( uLen != pHalMsgHeader->msgLen )
19952 {
19953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19954 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19956 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 }
19958
19959 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19960
19961 /*The message itself starts after the header*/
19962 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19963 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19964 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19965 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19966
19967
19968 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19969 {
19970 /*Stop the timer as the response was received */
19971 /*!UT - check for potential race conditions between stop and response */
19972 wpalTimerStop(&pWDICtx->wptResponseTimer);
19973 }
19974 /* Check if we receive a response message which is not expected */
19975 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19976 {
19977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19978 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19979 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19982 pWDICtx->wdiExpectedResponse);
19983 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19984 return;
19985 }
19986
19987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19988 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19989
19990 /*Post response event to the state machine*/
19991 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19992
19993}/*WDI_RXMsgCTSCB*/
19994
19995
19996/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019998========================================================================*/
19999
20000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020001 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020003
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 @param pWDICtx - pointer to the control block
20005
20006 @return Result of the function call
20007*/
20008WPT_INLINE WDI_Status
20009WDI_CleanCB
20010(
20011 WDI_ControlBlockType* pWDICtx
20012)
20013{
20014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20015
20016 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020018
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20021 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20022
20023 WDI_ResetAssocSessions( pWDICtx );
20024
20025 return WDI_STATUS_SUCCESS;
20026}/*WDI_CleanCB*/
20027
20028
20029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020031
Jeff Johnsone7245742012-09-05 17:12:55 -070020032
20033 @param pWDICtx: pointer to the WLAN DAL context
20034 pEventData: pointer to the event information structure
20035
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 @see
20037 @return Result of the function call
20038*/
20039WPT_INLINE WDI_Status
20040WDI_ProcessRequest
20041(
20042 WDI_ControlBlockType* pWDICtx,
20043 WDI_EventInfoType* pEventData
20044)
20045{
20046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20047
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 already checked these pointers*/
20050
20051 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20052 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20055 "Calling request processing function for req %s (%d) %x",
20056 WDI_getReqMsgString(pEventData->wdiRequest),
20057 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20058 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20059 }
20060 else
20061 {
20062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020063 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 pEventData->wdiRequest);
20065 return WDI_STATUS_E_NOT_IMPLEMENT;
20066 }
20067}/*WDI_ProcessRequest*/
20068
20069
20070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 prefixes it with a send message header
20074
20075 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 wdiReqType: type of the request being sent
20077 uBufferLen: message buffer len
20078 pMsgBuffer: resulting allocated buffer
20079 pusDataOffset: offset in the buffer where the caller
20080 can start copying its message data
20081 puBufferSize: the resulting buffer size (offset+buff
20082 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020083
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 @see
20085 @return Result of the function call
20086*/
20087WDI_Status
20088WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020089(
20090 WDI_ControlBlockType* pWDICtx,
20091 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020093 wpt_uint8** pMsgBuffer,
20094 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 wpt_uint16* pusBufferSize
20096)
20097{
20098 tHalMsgHeader halMsgHeader;
20099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20100
Jeff Johnsone7245742012-09-05 17:12:55 -070020101 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 again*/
20103
20104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020107 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20109 if ( NULL == *pMsgBuffer )
20110 {
20111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20112 "Unable to allocate message buffer for req %s (%d)",
20113 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 }
20118
20119 /*-------------------------------------------------------------------------
20120 Fill in the message header
20121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20123 /* Fill msgVersion */
20124#ifdef WLAN_FEATURE_11AC
20125 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020126 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 else
20128#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020129 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020130
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20132 *pusDataOffset = sizeof(halMsgHeader);
20133 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20134
20135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136}/*WDI_GetMessageBuffer*/
20137
20138
20139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 the CB
20143
20144 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020146
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 usSendSize size of the buffer to be sent
20148 pRspCb: response callback - save in the WDI
20149 CB
20150 pUserData: user data associated with the
20151 callback
20152 wdiExpectedResponse: the code of the response that is
20153 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020154
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 @see
20156 @return Result of the function call
20157*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020158WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020159WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020160(
20161 WDI_ControlBlockType* pWDICtx,
20162 wpt_uint8* pSendBuffer,
20163 wpt_uint32 usSendSize,
20164 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 void* pUserData,
20166 WDI_ResponseEnumType wdiExpectedResponse
20167)
20168{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020169 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020170 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20172
20173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 ------------------------------------------------------------------------*/
20176 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 pWDICtx->pfncRspCB = pRspCb;
20178 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179
20180 /*-----------------------------------------------------------------------
20181 Call the CTS to send this message over - free message afterwards
20182 - notify transport failure
20183 Note: CTS is reponsible for freeing the message buffer.
20184 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020185 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20186 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20187 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 "Failed to send message over the bus - catastrophic failure");
20191
Jeff Johnsond13512a2012-07-17 11:42:19 -070020192 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020194 else
20195 {
20196 /* even when message was placed in CTS deferred Q, we will treat it
20197 success but log this info
20198 */
20199 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20200 {
20201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20202 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20203 "response %s (%d)",
20204 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20205 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020206 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020207 }
20208 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020209
Jeff Johnsond13512a2012-07-17 11:42:19 -070020210 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 if ( NULL != pWDICtx->wdiReqStatusCB )
20212 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020213 /*Inform originator whether request went through or not*/
20214 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20215 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 pWDICtx->wdiReqStatusCB = NULL;
20217 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020218 callback(wdiStatus, callbackContext);
20219
20220 /*For WDI requests which have registered a request callback,
20221 inform the WDA caller of the same via setting the return value
20222 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20223 end up repeating the functonality in the req callback for the
20224 WDI_STATUS_E_FAILURE case*/
20225 if (wdiStatus == WDI_STATUS_E_FAILURE)
20226 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 }
20228
Jeff Johnsond13512a2012-07-17 11:42:19 -070020229 if ( wdiStatus == WDI_STATUS_SUCCESS )
20230 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 /*Start timer for the expected response */
20232 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020233
20234 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020235 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020236 }
20237 else
20238 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020239 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020240 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20241 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020242
Jeff Johnsond13512a2012-07-17 11:42:19 -070020243 return wdiStatus;
20244
Jeff Johnson295189b2012-06-20 16:38:30 -070020245}/*WDI_SendMsg*/
20246
20247
20248
20249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 the bus using the control transport and saves some info
20252 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020253
20254 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 pSendBuffer: buffer to be sent
20256 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020257
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 @see
20259 @return Result of the function call
20260*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020262WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020263(
20264 WDI_ControlBlockType* pWDICtx,
20265 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 wpt_uint32 usSendSize
20267)
20268{
20269 wpt_uint32 uStatus ;
20270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20271
20272 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 Note: CTS is reponsible for freeing the message buffer.
20275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020276 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 (void*)pSendBuffer, usSendSize );
20278
20279 /*Inform Upper MAC about the outcome of the request*/
20280 if ( NULL != pWDICtx->wdiReqStatusCB )
20281 {
20282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20283 "Send indication status : %d", uStatus);
20284
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020285 /* even if CTS placed indication into its deferred Q, we treat it
20286 * as success and let CTS drain its queue as per smd interrupt to CTS
20287 */
20288 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 -070020289 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 }
20291
20292 /*If sending of the message failed - it is considered catastrophic and
20293 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020294 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20295 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20296
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 {
20298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020300
20301 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20302 return WDI_STATUS_E_FAILURE;
20303 }
20304
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020306}/*WDI_SendIndication*/
20307
20308
20309/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020310 @brief WDI_DetectedDeviceError - called internally by DAL when
20311 it has detected a failure in the device
20312
20313 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 usErrorCode: error code detected by WDI or received
20315 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020316
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020319*/
20320void
20321WDI_DetectedDeviceError
20322(
20323 WDI_ControlBlockType* pWDICtx,
20324 wpt_uint16 usErrorCode
20325)
20326{
20327 WDI_LowLevelIndType wdiInd;
20328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20329
20330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20331 "Device Error detected code: %d - transitioning to stopped state",
20332 usErrorCode);
20333
20334 wpalMutexAcquire(&pWDICtx->wptMutex);
20335
20336 WDI_STATableStop(pWDICtx);
20337
20338 WDI_ResetAssocSessions(pWDICtx);
20339
20340 /*Set the expected state transition to stopped - because the device
20341 experienced a failure*/
20342 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20343
20344 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020346
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020348
20349 /*TO DO: - there should be an attempt to reset the device here*/
20350
20351 wpalMutexRelease(&pWDICtx->wptMutex);
20352
20353 /*------------------------------------------------------------------------
20354 Notify UMAC if a handler is registered
20355 ------------------------------------------------------------------------*/
20356 if (pWDICtx->wdiLowLevelIndCB)
20357 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20359 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020360
20361 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20362 }
20363}/*WDI_DetectedDeviceError*/
20364
20365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 we started on send message has expire - this should
20368 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 reply - trigger catastrophic failure
20370 @param
20371
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020373
20374 @see
20375 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020376*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020377void
Jeff Johnson295189b2012-06-20 16:38:30 -070020378WDI_ResponseTimerCB
20379(
20380 void *pUserData
20381)
20382{
20383 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20385
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020386 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 }
20393
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020394 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020395 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020396
20397 /* If response timer is running at this time that means this timer
20398 * event is not for the last request but rather last-to-last request and
20399 * this timer event has come after we recevied respone for last-to-last
20400 * message
20401 */
20402 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20403 {
20404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20405 "WDI_ResponseTimerCB: timer in running state on timer event, "
20406 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20407 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20408 return;
20409 }
20410
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020411 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 {
20413
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020416 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020418 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20419 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020420
20421 /* WDI timeout means Riva is not responding or SMD communication to Riva
20422 * is not happening. The only possible way to recover from this error
20423 * is to initiate SSR from APPS.
20424 * There is also an option to re-enable wifi, which will eventually
20425 * trigger SSR
20426 */
20427 if (gWDICb.bEnableSSR == false)
20428 {
20429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20430 "SSR is not enabled on WDI timeout");
20431 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20432 return;
20433 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020434#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020435 wpalWcnssResetIntr();
20436 /* if this timer fires, it means Riva did not receive the FIQ */
20437 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020438#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020439 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20440 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020441#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 }
20443 else
20444 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020446 "Timeout occurred but not waiting for any response %d "
20447 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20448 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20449 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 }
20451
20452 return;
20453
20454}/*WDI_ResponseTimerCB*/
20455
20456
20457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
Jeff Johnsone7245742012-09-05 17:12:55 -070020460
20461 @param pWDICtx: pointer to the WLAN DAL context
20462 pEventData: pointer to the event information structure
20463
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 @see
20465 @return Result of the function call
20466*/
20467WPT_INLINE WDI_Status
20468WDI_ProcessResponse
20469(
20470 WDI_ControlBlockType* pWDICtx,
20471 WDI_EventInfoType* pEventData
20472)
20473{
20474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20475
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 already checked these pointers
20478 ! - revisit this assumption */
20479 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20480 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 WDI_getRespMsgString(pEventData->wdiResponse),
20485 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20486 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20487 }
20488 else
20489 {
20490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 pEventData->wdiResponse);
20493 return WDI_STATUS_E_NOT_IMPLEMENT;
20494 }
20495}/*WDI_ProcessResponse*/
20496
20497
20498/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020500=========================================================================*/
20501
20502/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 @brief Utility function used by the DAL Core to help queue a
20504 request that cannot be processed right away.
20505 @param
20506
Jeff Johnson295189b2012-06-20 16:38:30 -070020507 pWDICtx: - pointer to the WDI control block
20508 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 queued
20510
20511 @see
20512 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020513*/
20514WDI_Status
20515WDI_QueuePendingReq
20516(
20517 WDI_ControlBlockType* pWDICtx,
20518 WDI_EventInfoType* pEventData
20519)
20520{
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20525
20526 if ( NULL == pEventDataQueue )
20527 {
20528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020529 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 WDI_ASSERT(0);
20531 return WDI_STATUS_MEM_FAILURE;
20532 }
20533
20534 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20535 pEventDataQueue->pUserData = pEventData->pUserData;
20536 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20537 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020539
20540 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20541 {
20542 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020543
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 if ( NULL == pEventInfo )
20545 {
20546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 WDI_ASSERT(0);
20549 wpalMemoryFree(pEventDataQueue);
20550 return WDI_STATUS_MEM_FAILURE;
20551 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020552
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20554
20555 }
20556 pEventDataQueue->pEventData = pEventInfo;
20557
20558 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020562
20563 return WDI_STATUS_SUCCESS;
20564}/*WDI_QueuePendingReq*/
20565
20566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 @param
20570
20571 pMsg - pointer to the message
20572
20573 @see
20574 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020575*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020576void
Jeff Johnson295189b2012-06-20 16:38:30 -070020577WDI_PALCtrlMsgCB
20578(
20579 wpt_msg *pMsg
20580)
20581{
20582 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 WDI_ControlBlockType* pWDICtx = NULL;
20584 WDI_Status wdiStatus;
20585 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 void* pUserData;
20587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20588
20589 if (( NULL == pMsg )||
20590 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20591 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20592 {
20593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 }
20598
20599 /*Transition back to the state that we had before serialization
20600 - serialization transitions us to BUSY to stop any incomming requests
20601 ! TO DO L: possible race condition here if a request comes in between the
20602 state transition and the post function*/
20603
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020605
20606 /*-----------------------------------------------------------------------
20607 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020608 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 -----------------------------------------------------------------------*/
20610 switch ( pEventData->wdiRequest )
20611 {
20612
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20615 break;
20616
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 case WDI_NV_DOWNLOAD_REQ:
20618 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20619 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20620 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20621 {
20622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020623 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20625 }
20626 else
20627 {
20628 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20629 }
20630
20631 break;
20632
20633 default:
20634 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20635 break;
20636 }/*switch ( pEventData->wdiRequest )*/
20637
20638 if ( WDI_STATUS_SUCCESS != wdiStatus )
20639 {
20640 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20641
20642 if ( NULL != pfnReqStatusCB )
20643 {
20644 /*Fail the request*/
20645 pfnReqStatusCB( wdiStatus, pUserData);
20646 }
20647 }
20648
20649 /* Free data - that was allocated when queueing*/
20650 if( pEventData != NULL )
20651 {
20652 if( pEventData->pEventData != NULL )
20653 {
20654 wpalMemoryFree(pEventData->pEventData);
20655 }
20656 wpalMemoryFree(pEventData);
20657 }
20658
20659 if( pMsg != NULL )
20660 {
20661 wpalMemoryFree(pMsg);
20662 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020663
Jeff Johnson295189b2012-06-20 16:38:30 -070020664}/*WDI_PALCtrlMsgCB*/
20665
20666/**
20667 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 and schedule for execution a pending request
20669 @param
20670
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 pWDICtx: - pointer to the WDI control block
20672 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 queued
20674
20675 @see
20676 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020677*/
20678WDI_Status
20679WDI_DequeuePendingReq
20680(
20681 WDI_ControlBlockType* pWDICtx
20682)
20683{
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20688
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020690
20691 if ( NULL == pNode )
20692 {
20693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 return WDI_STATUS_SUCCESS;
20696 }
20697
20698 /*The node actually points to the 1st element inside the Event Data struct -
20699 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020701
20702 /*Serialize processing in the control thread
20703 !TO DO: - check to see if these are all the messages params that need
20704 to be filled in*/
20705 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20706
20707 if ( NULL == palMsg )
20708 {
20709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 palMsg->callback = WDI_PALCtrlMsgCB;
20716 palMsg->ptr = pEventData;
20717
20718 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 palMsg->val = pWDICtx->uGlobalState;
20720
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 /*Transition back to BUSY as we need to handle a queued request*/
20722 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020723
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20725
20726 return WDI_STATUS_PENDING;
20727}/*WDI_DequeuePendingReq*/
20728
20729
20730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 away.- The assoc requests will be queued by BSSID
20734 @param
20735
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 pWDICtx: - pointer to the WDI control block
20737 pEventData: pointer to the evnt info that needs to be queued
20738 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020739
20740 @see
20741 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020742*/
20743WDI_Status
20744WDI_QueueNewAssocRequest
20745(
20746 WDI_ControlBlockType* pWDICtx,
20747 WDI_EventInfoType* pEventData,
20748 wpt_macAddr macBSSID
20749)
20750{
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 wpt_uint8 i;
20752 WDI_BSSSessionType* pSession = NULL;
20753 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 void* pEventInfo;
20756 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020758
Jeff Johnsone7245742012-09-05 17:12:55 -070020759
20760 /*------------------------------------------------------------------------
20761 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 ------------------------------------------------------------------------*/
20763 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20764 {
20765 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20766 {
20767 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 pSession = &pWDICtx->aBSSSessions[i];
20769 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 }
20771 }
20772
20773 if ( i >= WDI_MAX_BSS_SESSIONS )
20774 {
20775 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020778
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 /*------------------------------------------------------------------------
20780 Fill in the BSSID for this session and set the usage flag
20781 ------------------------------------------------------------------------*/
20782 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020784
20785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 ------------------------------------------------------------------------*/
20788 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20789 if ( NULL == pEventDataQueue )
20790 {
20791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020792 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 WDI_ASSERT(0);
20794 return WDI_STATUS_MEM_FAILURE;
20795 }
20796
20797 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20798 if ( NULL == pSessionIdElement )
20799 {
20800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020801 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 WDI_ASSERT(0);
20803 wpalMemoryFree(pEventDataQueue);
20804 return WDI_STATUS_MEM_FAILURE;
20805 }
20806
20807 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20808 if ( NULL == pEventInfo )
20809 {
20810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020811 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 WDI_ASSERT(0);
20813 wpalMemoryFree(pSessionIdElement);
20814 wpalMemoryFree(pEventDataQueue);
20815 return WDI_STATUS_MEM_FAILURE;
20816 }
20817
20818 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20819 pEventDataQueue->pUserData = pEventData->pUserData;
20820 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20821 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020822 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020823
20824 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20825 pEventDataQueue->pEventData = pEventInfo;
20826
20827 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020829
20830 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020832
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020834
20835 /*We need to maintain a separate list that keeps track of the order in which
20836 the new assoc requests are being queued such that we can start processing
20837 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 pSessionIdElement->ucIndex = i;
20839 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020840
20841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20842 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020843 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020844
20845 /*Return pending as this is what the status of the request is since it has
20846 been queued*/
20847 return WDI_STATUS_PENDING;
20848}/*WDI_QueueNewAssocRequest*/
20849
20850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 away.- The assoc requests will be queued by BSSID
20854 @param
20855
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 pWDICtx: - pointer to the WDI control block
20857 pSession: - session in which to queue
20858 pEventData: pointer to the event info that needs to be
20859 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020860
20861 @see
20862 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020863*/
20864WDI_Status
20865WDI_QueueAssocRequest
20866(
20867 WDI_ControlBlockType* pWDICtx,
20868 WDI_BSSSessionType* pSession,
20869 WDI_EventInfoType* pEventData
20870)
20871{
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020876
20877 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 Sanity check
20879 ------------------------------------------------------------------------*/
20880 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20881 {
20882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020884
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 }
20887
20888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 ------------------------------------------------------------------------*/
20891 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20892 if ( NULL == pEventDataQueue )
20893 {
20894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020895 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 WDI_ASSERT(0);
20897 return WDI_STATUS_MEM_FAILURE;
20898 }
20899
20900 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20901 if ( NULL == pEventInfo )
20902 {
20903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20904 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020905 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 WDI_ASSERT(0);
20907 wpalMemoryFree(pEventDataQueue);
20908 return WDI_STATUS_MEM_FAILURE;
20909 }
20910
20911 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20912 pEventDataQueue->pUserData = pEventData->pUserData;
20913 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20914 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 pEventDataQueue->pEventData = pEventInfo;
20917
20918 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20919
20920 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020921 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020922
20923 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020925
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020927
20928 /*The result of this operation is pending because the request has been
20929 queued and it will be processed at a later moment in time */
20930 return WDI_STATUS_PENDING;
20931}/*WDI_QueueAssocRequest*/
20932
20933/**
20934 @brief Utility function used by the DAL Core to help dequeue
20935 an association request that was pending
20936 The request will be queued up in front of the main
20937 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020938 @param
20939
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020941
20942
20943 @see
20944 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020945*/
20946WDI_Status
20947WDI_DequeueAssocRequest
20948(
20949 WDI_ControlBlockType* pWDICtx
20950)
20951{
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 wpt_list_node* pNode = NULL;
20953 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 WDI_BSSSessionType* pSession;
20955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020956
20957 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 Sanity check
20959 ------------------------------------------------------------------------*/
20960 if ( NULL == pWDICtx )
20961 {
20962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020964
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 }
20967
20968 /*------------------------------------------------------------------------
20969 An association has been completed => a new association can occur
20970 Check to see if there are any pending associations ->
20971 If so , transfer all the pending requests into the busy queue for
20972 processing
20973 These requests have arrived prior to the requests in the busy queue
20974 (bc they needed to be processed in order to be placed in this queue)
20975 => they will be placed at the front of the busy queue
20976 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020978
20979 if ( NULL == pNode )
20980 {
20981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 return WDI_STATUS_SUCCESS;
20984 }
20985
20986 /*The node actually points to the 1st element inside the Session Id struct -
20987 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020989
20990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20991 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20992
20993 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20994 {
20995 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020996
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020998 the front of the main waiting queue for subsequent execution*/
20999 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 while ( NULL != pNode )
21001 {
21002 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21004 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 }
21008 else
21009 {
21010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WPAL_ASSERT(0);
21013 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021016
Jeff Johnson295189b2012-06-20 16:38:30 -070021017 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21018 wpalMemoryFree(pSessionIdElement);
21019 return WDI_STATUS_SUCCESS;
21020}/*WDI_DequeueAssocRequest*/
21021
21022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 pending requests - all req cb will be called with
21025 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 @param
21027
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021029
21030 @see
21031 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021032*/
21033WDI_Status
21034WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021035(
Jeff Johnson295189b2012-06-20 16:38:30 -070021036 WDI_ControlBlockType* pWDICtx
21037)
21038{
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021041 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 void* pUserData;
21043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21044
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021046
21047 /*------------------------------------------------------------------------
21048 Go through all the requests and fail them - this will only be called
21049 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 ------------------------------------------------------------------------*/
21052 while( pNode )
21053 {
21054 /*The node actually points to the 1st element inside the Event Data struct -
21055 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 pEventDataQueue = (WDI_EventInfoType*)pNode;
21057
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21059 if ( NULL != pfnReqStatusCB )
21060 {
21061 /*Fail the request*/
21062 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21063 }
21064 /* Free data - that was allocated when queueing */
21065 if ( pEventDataQueue->pEventData != NULL )
21066 {
21067 wpalMemoryFree(pEventDataQueue->pEventData);
21068 }
21069 wpalMemoryFree(pEventDataQueue);
21070
21071 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21072 {
21073 break;
21074 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 }
21076
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 return WDI_STATUS_SUCCESS;
21078}/*WDI_ClearPendingRequests*/
21079
21080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 @brief Helper routine used to init the BSS Sessions in the WDI control block
21082
21083
21084 @param pWDICtx: pointer to the WLAN DAL context
21085
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 @see
21087*/
21088void
21089WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021090(
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 WDI_ControlBlockType* pWDICtx
21092)
21093{
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21096
21097 /*-------------------------------------------------------------------------
21098 No Sanity check
21099 -------------------------------------------------------------------------*/
21100 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21101 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21104 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21105 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21106 }
21107}/*WDI_ResetAssocSessions*/
21108
21109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 @brief Helper routine used to find a session based on the BSSID
21111
21112
21113 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 pSession: pointer to the session (if found)
21116
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021119*/
21120wpt_uint8
21121WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021122(
Jeff Johnson295189b2012-06-20 16:38:30 -070021123 WDI_ControlBlockType* pWDICtx,
21124 wpt_macAddr macBSSID,
21125 WDI_BSSSessionType** ppSession
21126)
21127{
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21130
21131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 -------------------------------------------------------------------------*/
21134 if ( NULL == ppSession )
21135 {
21136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021137 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 }
21140
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021142
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 /*------------------------------------------------------------------------
21144 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021145 ------------------------------------------------------------------------*/
21146 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21147 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021148 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21149 (eWLAN_PAL_TRUE ==
21150 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21151 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 {
21153 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 return i;
21156 }
21157 }
21158
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021160}/*WDI_FindAssocSession*/
21161
21162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 @brief Helper routine used to find a session based on the BSSID
21164
21165
21166 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 ucBSSIdx: BSS Index of the session
21168 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021169
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021172*/
21173wpt_uint8
21174WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021175(
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 WDI_ControlBlockType* pWDICtx,
21177 wpt_uint16 ucBSSIdx,
21178 WDI_BSSSessionType** ppSession
21179)
21180{
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21183
21184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 -------------------------------------------------------------------------*/
21187 if ( NULL == ppSession )
21188 {
21189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021190 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 }
21193
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021195
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 /*------------------------------------------------------------------------
21197 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 ------------------------------------------------------------------------*/
21199 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21200 {
21201 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21202 {
21203 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 return i;
21206 }
21207 }
21208
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210}/*WDI_FindAssocSessionByBSSIdx*/
21211
21212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021213 @brief Helper routine used to find a session based on the BSSID
21214
21215
21216 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 ucBSSIdx: BSS Index of the session
21218 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021219
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021222*/
21223wpt_uint8
21224WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021225(
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 WDI_ControlBlockType* pWDICtx,
21227 wpt_uint16 usIdx,
21228 WDI_BSSSessionType** ppSession
21229)
21230{
21231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21232
21233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 -------------------------------------------------------------------------*/
21236 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21237 {
21238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021239 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 }
21242
21243 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021245
21246 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021247
Jeff Johnson295189b2012-06-20 16:38:30 -070021248}/*WDI_FindAssocSessionByBSSIdx*/
21249
21250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021253
21254
21255 @param pWDICtx: pointer to the WLAN DAL context
21256 pSession: pointer to the session (if found)
21257
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021260*/
21261wpt_uint8
21262WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021263(
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 WDI_ControlBlockType* pWDICtx,
21265 WDI_BSSSessionType** ppSession
21266)
21267{
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 -------------------------------------------------------------------------*/
21273 if ( NULL == ppSession )
21274 {
21275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021276 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 }
21279
Jeff Johnsone7245742012-09-05 17:12:55 -070021280 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021281
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 /*------------------------------------------------------------------------
21283 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 ------------------------------------------------------------------------*/
21285 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21286 {
21287 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21288 {
21289 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 return i;
21292 }
21293 }
21294
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021296}/*WDI_FindEmptySession*/
21297
21298
21299/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021302
21303
21304 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021305 macBSSID: pointer to BSSID. If NULL, get all the session.
21306 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21307 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21308 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 @see
21310 @return Number of sessions in use
21311*/
21312wpt_uint8
21313WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021314(
Hoonki Lee26599972013-04-24 01:21:58 -070021315 WDI_ControlBlockType* pWDICtx,
21316 wpt_macAddr macBSSID,
21317 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021318)
21319{
Jeff Johnsone7245742012-09-05 17:12:55 -070021320 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021322
21323 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 Count all sessions in use
21325 ------------------------------------------------------------------------*/
21326 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21327 {
Hoonki Lee26599972013-04-24 01:21:58 -070021328 if ( macBSSID && skipBSSID &&
21329 (eWLAN_PAL_TRUE ==
21330 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21331 WDI_MAC_ADDR_LEN)))
21332 {
21333 continue;
21334 }
21335 else if ( pWDICtx->aBSSSessions[i].bInUse )
21336 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021338 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 }
21340
Jeff Johnsone7245742012-09-05 17:12:55 -070021341 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021342}/*WDI_GetActiveSessionsCount*/
21343
21344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021347
21348
21349 @param pWDICtx: pointer to the WLAN DAL context
21350 pSession: pointer to the session (if found)
21351
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021354*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021355void
Jeff Johnson295189b2012-06-20 16:38:30 -070021356WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021357(
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 WDI_ControlBlockType* pWDICtx,
21359 WDI_BSSSessionType* ppSession
21360)
21361{
21362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 -------------------------------------------------------------------------*/
21365 if ( NULL == ppSession )
21366 {
21367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021368 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 }
21371
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 /*------------------------------------------------------------------------
21373 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021374 ------------------------------------------------------------------------*/
21375 wpal_list_destroy(&ppSession->wptPendingQueue);
21376 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21378 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21380 wpal_list_init(&ppSession->wptPendingQueue);
21381
21382}/*WDI_DeleteSession*/
21383
21384/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021387 @param
21388
Jeff Johnson295189b2012-06-20 16:38:30 -070021389 WDI_AddStaParams: - pointer to the WDI Add STA params
21390 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021391
21392 @see
21393 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021394*/
21395void
21396WDI_AddBcastSTAtoSTATable
21397(
21398 WDI_ControlBlockType* pWDICtx,
21399 WDI_AddStaParams * staParams,
21400 wpt_uint16 usBcastStaIdx
21401)
21402{
21403 WDI_AddStaParams wdiAddSTAParam = {0};
21404 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21406
21407 /*---------------------------------------------------------------------
21408 Sanity check
21409 ---------------------------------------------------------------------*/
21410 if ( NULL == staParams )
21411 {
21412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021413 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021414
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 }
21417
21418 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21419 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21420 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21421 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21422 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21423 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21424 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21425 WDI_MAC_ADDR_LEN );
21426 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21427 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21428 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21429 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21430 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21431 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21432 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021433
Jeff Johnson295189b2012-06-20 16:38:30 -070021434 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21435}
21436
21437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 @brief NV blob will be divided into fragments of size 4kb and
21439 Sent to HAL
21440
21441 @param pWDICtx: pointer to the WLAN DAL context
21442 pEventData: pointer to the event information structure
21443
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 @see
21445 @return Result of the function call
21446 */
21447
21448WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021449(
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 WDI_ControlBlockType* pWDICtx,
21451 WDI_EventInfoType* pEventData
21452)
21453{
21454
21455 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21456 wpt_uint8* pSendBuffer = NULL;
21457 wpt_uint16 usDataOffset = 0;
21458 wpt_uint16 usSendSize = 0;
21459 wpt_uint16 usCurrentFragmentSize =0;
21460 wpt_uint8* pSrcBuffer = NULL;
21461 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21462 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21463
21464 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21465 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21466 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21467
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21470
21471 /* Update the current Fragment Number */
21472 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21473
21474 /*Update the HAL REQ structure */
21475 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21476 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21477 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21478
21479 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 image will be sent to HAL*/
21482
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21489 usCurrentFragmentSize = FRAGMENT_SIZE;
21490
21491 /*Update the HAL REQ structure */
21492 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21493 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21494
21495 }
21496 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 usCurrentFragmentSize = FRAGMENT_SIZE;
21499
21500 /*Update the HAL REQ structure */
21501 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21502 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21503 }
21504
21505 /*-----------------------------------------------------------------------
21506 Get message buffer
21507 -----------------------------------------------------------------------*/
21508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21509 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21510 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21513 {
21514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21515 "Unable to get send buffer in NV Download req %x %x ",
21516 pEventData, pwdiNvDownloadReqParams);
21517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 }
21520
21521 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21524
21525 /* Appending the NV image fragment */
21526 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21527 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21528 usCurrentFragmentSize);
21529
21530 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021532
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21534 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 WDI_NV_DOWNLOAD_RESP);
21536
21537}
Jeff Johnsone7245742012-09-05 17:12:55 -070021538/*============================================================================
21539 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 ============================================================================*/
21541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 @brief Helper routine used to find a session based on the BSSID
21543 @param pContext: pointer to the WLAN DAL context
21544 @param pDPContext: pointer to the Datapath context
21545
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021548*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021549WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021550WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21551{
21552 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21553
21554 pCB->pDPContext = pDPContext;
21555 return;
21556}
21557
21558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 @brief Helper routine used to find a session based on the BSSID
21560
21561
21562 @param pContext: pointer to the WLAN DAL context
21563
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 @see
21565 @return pointer to Datapath context
21566*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021567WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021568WDI_DS_GetDatapathContext (void *pContext)
21569{
21570 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21571 return pCB->pDPContext;
21572}
21573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 @brief Helper routine used to find a session based on the BSSID
21575
21576
21577 @param pContext: pointer to the WLAN DAL context
21578 @param pDTDriverContext: pointer to the Transport Driver context
21579
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 @see
21581 @return void
21582*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021583WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021584WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21585{
21586 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21587
21588 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021590}
21591
21592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 @brief Helper routine used to find a session based on the BSSID
21594
21595
21596 @param pWDICtx: pointer to the WLAN DAL context
21597
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021600*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021601WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021602WDT_GetTransportDriverContext (void *pContext)
21603{
21604 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021606}
21607
Jeff Johnsone7245742012-09-05 17:12:55 -070021608/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 Helper inline converters
21610 ============================================================================*/
21611/*Convert WDI driver type into HAL driver type*/
21612WPT_STATIC WPT_INLINE WDI_Status
21613WDI_HAL_2_WDI_STATUS
21614(
21615 eHalStatus halStatus
21616)
21617{
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 the chances of getting inlined*/
21620 switch( halStatus )
21621 {
21622 case eHAL_STATUS_SUCCESS:
21623 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21624 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21625 return WDI_STATUS_SUCCESS;
21626 case eHAL_STATUS_FAILURE:
21627 return WDI_STATUS_E_FAILURE;
21628 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 return WDI_STATUS_MEM_FAILURE;
21630 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021632 default:
21633 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21634 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021635
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021637}/*WDI_HAL_2_WDI_STATUS*/
21638
21639/*Convert WDI request type into HAL request type*/
21640WPT_STATIC WPT_INLINE tHalHostMsgType
21641WDI_2_HAL_REQ_TYPE
21642(
21643 WDI_RequestEnumType wdiReqType
21644)
21645{
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 the chances of getting inlined*/
21648 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021651 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021656 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021658 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021659 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021679 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 return WLAN_HAL_RMV_STAKEY_REQ;
21685 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 case WDI_DEL_BA_REQ:
21694 return WLAN_HAL_DEL_BA_REQ;
21695#ifdef FEATURE_WLAN_CCX
21696 case WDI_TSM_STATS_REQ:
21697 return WLAN_HAL_TSM_STATS_REQ;
21698#endif
21699 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 case WDI_ADD_BA_SESSION_REQ:
21710 return WLAN_HAL_ADD_BA_SESSION_REQ;
21711 case WDI_TRIGGER_BA_REQ:
21712 return WLAN_HAL_TRIGGER_BA_REQ;
21713 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021716 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21718 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21719 case WDI_SET_MAX_TX_POWER_REQ:
21720 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021721 case WDI_SET_TX_POWER_REQ:
21722 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21724 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021726 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021728 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021734 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 case WDI_REM_BEACON_FILTER_REQ:
21746 return WLAN_HAL_REM_BCN_FILTER_REQ;
21747 case WDI_SET_RSSI_THRESHOLDS_REQ:
21748 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21749 case WDI_HOST_OFFLOAD_REQ:
21750 return WLAN_HAL_HOST_OFFLOAD_REQ;
21751 case WDI_WOWL_ADD_BC_PTRN_REQ:
21752 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21753 case WDI_WOWL_DEL_BC_PTRN_REQ:
21754 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21755 case WDI_WOWL_ENTER_REQ:
21756 return WLAN_HAL_ENTER_WOWL_REQ;
21757 case WDI_WOWL_EXIT_REQ:
21758 return WLAN_HAL_EXIT_WOWL_REQ;
21759 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21760 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21761 case WDI_NV_DOWNLOAD_REQ:
21762 return WLAN_HAL_DOWNLOAD_NV_REQ;
21763 case WDI_FLUSH_AC_REQ:
21764 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21765 case WDI_BTAMP_EVENT_REQ:
21766 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21767#ifdef WLAN_FEATURE_VOWIFI_11R
21768 case WDI_AGGR_ADD_TS_REQ:
21769 return WLAN_HAL_AGGR_ADD_TS_REQ;
21770#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 case WDI_FTM_CMD_REQ:
21772 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 case WDI_ADD_STA_SELF_REQ:
21774 return WLAN_HAL_ADD_STA_SELF_REQ;
21775 case WDI_DEL_STA_SELF_REQ:
21776 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021777#ifdef FEATURE_OEM_DATA_SUPPORT
21778 case WDI_START_OEM_DATA_REQ:
21779 return WLAN_HAL_START_OEM_DATA_REQ;
21780#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 case WDI_HOST_RESUME_REQ:
21782 return WLAN_HAL_HOST_RESUME_REQ;
21783 case WDI_HOST_SUSPEND_IND:
21784 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021785 case WDI_TRAFFIC_STATS_IND:
21786 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070021787#ifdef WLAN_FEATURE_11W
21788 case WDI_EXCLUDE_UNENCRYPTED_IND:
21789 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
21790#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 case WDI_KEEP_ALIVE_REQ:
21792 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070021793#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
21794 case WDI_START_ROAM_CANDIDATE_LOOKUP_REQ:
21795 return WLAN_START_ROAM_CANDIDATE_LOOKUP_REQ;
21796#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021797#ifdef FEATURE_WLAN_SCAN_PNO
21798 case WDI_SET_PREF_NETWORK_REQ:
21799 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21800 case WDI_SET_RSSI_FILTER_REQ:
21801 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21802 case WDI_UPDATE_SCAN_PARAMS_REQ:
21803 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21804#endif // FEATURE_WLAN_SCAN_PNO
21805 case WDI_SET_TX_PER_TRACKING_REQ:
21806 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21807#ifdef WLAN_FEATURE_PACKET_FILTERING
21808 case WDI_8023_MULTICAST_LIST_REQ:
21809 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21810 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21813 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21814 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21815 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21816#endif // WLAN_FEATURE_PACKET_FILTERING
21817 case WDI_HAL_DUMP_CMD_REQ:
21818 return WLAN_HAL_DUMP_COMMAND_REQ;
21819#ifdef WLAN_FEATURE_GTK_OFFLOAD
21820 case WDI_GTK_OFFLOAD_REQ:
21821 return WLAN_HAL_GTK_OFFLOAD_REQ;
21822 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21823 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21824#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21825
21826 case WDI_INIT_SCAN_CON_REQ:
21827 return WLAN_HAL_INIT_SCAN_CON_REQ;
21828 case WDI_SET_POWER_PARAMS_REQ:
21829 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21830 case WDI_SET_TM_LEVEL_REQ:
21831 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21832 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21833 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021834#ifdef WLAN_FEATURE_11AC
21835 case WDI_UPDATE_VHT_OP_MODE_REQ:
21836 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21837#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021838 case WDI_GET_ROAM_RSSI_REQ:
21839 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021843
Jeff Johnson295189b2012-06-20 16:38:30 -070021844}/*WDI_2_HAL_REQ_TYPE*/
21845
21846/*Convert WDI response type into HAL response type*/
21847WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21848HAL_2_WDI_RSP_TYPE
21849(
21850 tHalHostMsgType halMsg
21851)
21852{
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 the chances of getting inlined*/
21855 switch( halMsg )
21856 {
21857 case WLAN_HAL_START_RSP:
21858 return WDI_START_RESP;
21859 case WLAN_HAL_STOP_RSP:
21860 return WDI_STOP_RESP;
21861 case WLAN_HAL_INIT_SCAN_RSP:
21862 return WDI_INIT_SCAN_RESP;
21863 case WLAN_HAL_START_SCAN_RSP:
21864 return WDI_START_SCAN_RESP;
21865 case WLAN_HAL_END_SCAN_RSP:
21866 return WDI_END_SCAN_RESP;
21867 case WLAN_HAL_FINISH_SCAN_RSP:
21868 return WDI_FINISH_SCAN_RESP;
21869 case WLAN_HAL_CONFIG_STA_RSP:
21870 return WDI_CONFIG_STA_RESP;
21871 case WLAN_HAL_DELETE_STA_RSP:
21872 return WDI_DEL_STA_RESP;
21873 case WLAN_HAL_CONFIG_BSS_RSP:
21874 return WDI_CONFIG_BSS_RESP;
21875 case WLAN_HAL_DELETE_BSS_RSP:
21876 return WDI_DEL_BSS_RESP;
21877 case WLAN_HAL_JOIN_RSP:
21878 return WDI_JOIN_RESP;
21879 case WLAN_HAL_POST_ASSOC_RSP:
21880 return WDI_POST_ASSOC_RESP;
21881 case WLAN_HAL_SET_BSSKEY_RSP:
21882 return WDI_SET_BSS_KEY_RESP;
21883 case WLAN_HAL_SET_STAKEY_RSP:
21884 return WDI_SET_STA_KEY_RESP;
21885 case WLAN_HAL_RMV_BSSKEY_RSP:
21886 return WDI_RMV_BSS_KEY_RESP;
21887 case WLAN_HAL_RMV_STAKEY_RSP:
21888 return WDI_RMV_STA_KEY_RESP;
21889 case WLAN_HAL_SET_BCASTKEY_RSP:
21890 return WDI_SET_STA_BCAST_KEY_RESP;
21891 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21892 // return WDI_RMV_STA_BCAST_KEY_RESP;
21893 case WLAN_HAL_ADD_TS_RSP:
21894 return WDI_ADD_TS_RESP;
21895 case WLAN_HAL_DEL_TS_RSP:
21896 return WDI_DEL_TS_RESP;
21897 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21898 return WDI_UPD_EDCA_PRMS_RESP;
21899 case WLAN_HAL_ADD_BA_RSP:
21900 return WDI_ADD_BA_RESP;
21901 case WLAN_HAL_DEL_BA_RSP:
21902 return WDI_DEL_BA_RESP;
21903#ifdef FEATURE_WLAN_CCX
21904 case WLAN_HAL_TSM_STATS_RSP:
21905 return WDI_TSM_STATS_RESP;
21906#endif
21907 case WLAN_HAL_CH_SWITCH_RSP:
21908 return WDI_CH_SWITCH_RESP;
21909 case WLAN_HAL_SET_LINK_ST_RSP:
21910 return WDI_SET_LINK_ST_RESP;
21911 case WLAN_HAL_GET_STATS_RSP:
21912 return WDI_GET_STATS_RESP;
21913 case WLAN_HAL_UPDATE_CFG_RSP:
21914 return WDI_UPDATE_CFG_RESP;
21915 case WLAN_HAL_ADD_BA_SESSION_RSP:
21916 return WDI_ADD_BA_SESSION_RESP;
21917 case WLAN_HAL_TRIGGER_BA_RSP:
21918 return WDI_TRIGGER_BA_RESP;
21919 case WLAN_HAL_UPDATE_BEACON_RSP:
21920 return WDI_UPD_BCON_PRMS_RESP;
21921 case WLAN_HAL_SEND_BEACON_RSP:
21922 return WDI_SND_BCON_RESP;
21923 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21924 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21925 /*Indications*/
21926 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21927 return WDI_HAL_RSSI_NOTIFICATION_IND;
21928 case WLAN_HAL_MISSED_BEACON_IND:
21929 return WDI_HAL_MISSED_BEACON_IND;
21930 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21931 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21932 case WLAN_HAL_MIC_FAILURE_IND:
21933 return WDI_HAL_MIC_FAILURE_IND;
21934 case WLAN_HAL_FATAL_ERROR_IND:
21935 return WDI_HAL_FATAL_ERROR_IND;
21936 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21937 return WDI_HAL_DEL_STA_IND;
21938 case WLAN_HAL_COEX_IND:
21939 return WDI_HAL_COEX_IND;
21940 case WLAN_HAL_OTA_TX_COMPL_IND:
21941 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 case WLAN_HAL_P2P_NOA_ATTR_IND:
21943 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021944 case WLAN_HAL_P2P_NOA_START_IND:
21945 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 case WLAN_HAL_TX_PER_HIT_IND:
21947 return WDI_HAL_TX_PER_HIT_IND;
21948 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21949 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021950 case WLAN_HAL_SET_TX_POWER_RSP:
21951 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 case WLAN_HAL_SET_P2P_GONOA_RSP:
21953 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021957 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021959 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21973 return WDI_SET_BEACON_FILTER_RESP;
21974 case WLAN_HAL_REM_BCN_FILTER_RSP:
21975 return WDI_REM_BEACON_FILTER_RESP;
21976 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21977 return WDI_SET_RSSI_THRESHOLDS_RESP;
21978 case WLAN_HAL_HOST_OFFLOAD_RSP:
21979 return WDI_HOST_OFFLOAD_RESP;
21980 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21981 return WDI_WOWL_ADD_BC_PTRN_RESP;
21982 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21983 return WDI_WOWL_DEL_BC_PTRN_RESP;
21984 case WLAN_HAL_ENTER_WOWL_RSP:
21985 return WDI_WOWL_ENTER_RESP;
21986 case WLAN_HAL_EXIT_WOWL_RSP:
21987 return WDI_WOWL_EXIT_RESP;
21988 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21989 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21990 case WLAN_HAL_DOWNLOAD_NV_RSP:
21991 return WDI_NV_DOWNLOAD_RESP;
21992 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21993 return WDI_FLUSH_AC_RESP;
21994 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21995 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 case WLAN_HAL_PROCESS_PTT_RSP:
21997 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 case WLAN_HAL_ADD_STA_SELF_RSP:
21999 return WDI_ADD_STA_SELF_RESP;
22000case WLAN_HAL_DEL_STA_SELF_RSP:
22001 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022002#ifdef FEATURE_OEM_DATA_SUPPORT
22003 case WLAN_HAL_START_OEM_DATA_RSP:
22004 return WDI_START_OEM_DATA_RESP;
22005#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 case WLAN_HAL_HOST_RESUME_RSP:
22007 return WDI_HOST_RESUME_RESP;
22008 case WLAN_HAL_KEEP_ALIVE_RSP:
22009 return WDI_KEEP_ALIVE_RESP;
22010#ifdef FEATURE_WLAN_SCAN_PNO
22011 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22012 return WDI_SET_PREF_NETWORK_RESP;
22013 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22016 return WDI_UPDATE_SCAN_PARAMS_RESP;
22017 case WLAN_HAL_PREF_NETW_FOUND_IND:
22018 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22019#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022020#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
22021 case WLAN_START_ROAM_CANDIDATE_LOOKUP_RSP:
22022 return WDI_START_ROAM_CANDIDATE_LOOKUP_RESP;
22023#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22025 return WDI_SET_TX_PER_TRACKING_RESP;
22026#ifdef WLAN_FEATURE_PACKET_FILTERING
22027 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22028 return WDI_8023_MULTICAST_LIST_RESP;
22029 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22030 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22031 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22032 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22033 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22034 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22035#endif // WLAN_FEATURE_PACKET_FILTERING
22036
22037 case WLAN_HAL_DUMP_COMMAND_RSP:
22038 return WDI_HAL_DUMP_CMD_RESP;
22039 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22040 return WDI_SET_POWER_PARAMS_RESP;
22041#ifdef WLAN_FEATURE_VOWIFI_11R
22042 case WLAN_HAL_AGGR_ADD_TS_RSP:
22043 return WDI_AGGR_ADD_TS_RESP;
22044#endif
22045
22046#ifdef WLAN_FEATURE_GTK_OFFLOAD
22047 case WLAN_HAL_GTK_OFFLOAD_RSP:
22048 return WDI_GTK_OFFLOAD_RESP;
22049 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22050 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22051#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22052#ifdef WLAN_WAKEUP_EVENTS
22053 case WLAN_HAL_WAKE_REASON_IND:
22054 return WDI_HAL_WAKE_REASON_IND;
22055#endif // WLAN_WAKEUP_EVENTS
22056
22057 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22058 return WDI_SET_TM_LEVEL_RESP;
22059 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22060 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022061#ifdef WLAN_FEATURE_11AC
22062 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22063 return WDI_UPDATE_VHT_OP_MODE_RESP;
22064#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022065#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22066 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22067 return WDI_GET_ROAM_RSSI_RESP;
22068#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022069 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022070 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 }
22072
22073}/*HAL_2_WDI_RSP_TYPE*/
22074
22075
22076/*Convert WDI driver type into HAL driver type*/
22077WPT_STATIC WPT_INLINE tDriverType
22078WDI_2_HAL_DRV_TYPE
22079(
22080 WDI_DriverType wdiDriverType
22081)
22082{
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 the chances of getting inlined*/
22085 switch( wdiDriverType )
22086 {
22087 case WDI_DRIVER_TYPE_PRODUCTION:
22088 return eDRIVER_TYPE_PRODUCTION;
22089 case WDI_DRIVER_TYPE_MFG:
22090 return eDRIVER_TYPE_MFG;
22091 case WDI_DRIVER_TYPE_DVT:
22092 return eDRIVER_TYPE_DVT;
22093 }
22094
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096}/*WDI_2_HAL_DRV_TYPE*/
22097
22098
22099/*Convert WDI stop reason into HAL stop reason*/
22100WPT_STATIC WPT_INLINE tHalStopType
22101WDI_2_HAL_STOP_REASON
22102(
22103 WDI_StopType wdiDriverType
22104)
22105{
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 the chances of getting inlined*/
22108 switch( wdiDriverType )
22109 {
22110 case WDI_STOP_TYPE_SYS_RESET:
22111 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022112 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22113 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 case WDI_STOP_TYPE_RF_KILL:
22115 return HAL_STOP_TYPE_RF_KILL;
22116 }
22117
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119}/*WDI_2_HAL_STOP_REASON*/
22120
22121
22122/*Convert WDI scan mode type into HAL scan mode type*/
22123WPT_STATIC WPT_INLINE eHalSysMode
22124WDI_2_HAL_SCAN_MODE
22125(
22126 WDI_ScanMode wdiScanMode
22127)
22128{
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 the chances of getting inlined*/
22131 switch( wdiScanMode )
22132 {
22133 case WDI_SCAN_MODE_NORMAL:
22134 return eHAL_SYS_MODE_NORMAL;
22135 case WDI_SCAN_MODE_LEARN:
22136 return eHAL_SYS_MODE_LEARN;
22137 case WDI_SCAN_MODE_SCAN:
22138 return eHAL_SYS_MODE_SCAN;
22139 case WDI_SCAN_MODE_PROMISC:
22140 return eHAL_SYS_MODE_PROMISC;
22141 case WDI_SCAN_MODE_SUSPEND_LINK:
22142 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022143 case WDI_SCAN_MODE_ROAM_SCAN:
22144 return eHAL_SYS_MODE_ROAM_SCAN;
22145 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22146 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147 }
22148
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150}/*WDI_2_HAL_SCAN_MODE*/
22151
22152/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022153WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022154WDI_2_HAL_SEC_CH_OFFSET
22155(
22156 WDI_HTSecondaryChannelOffset wdiSecChOffset
22157)
22158{
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 the chances of getting inlined*/
22161 switch( wdiSecChOffset )
22162 {
22163 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022166 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22169#ifdef WLAN_FEATURE_11AC
22170 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22171 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22172 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22173 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22174 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22175 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22176 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22177 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22178 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22179 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22180 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22181 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22182 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22183 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22184#endif
22185 default:
22186 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 }
22188
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190}/*WDI_2_HAL_SEC_CH_OFFSET*/
22191
22192/*Convert WDI BSS type into HAL BSS type*/
22193WPT_STATIC WPT_INLINE tSirBssType
22194WDI_2_HAL_BSS_TYPE
22195(
22196 WDI_BssType wdiBSSType
22197)
22198{
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 the chances of getting inlined*/
22201 switch( wdiBSSType )
22202 {
22203 case WDI_INFRASTRUCTURE_MODE:
22204 return eSIR_INFRASTRUCTURE_MODE;
22205 case WDI_INFRA_AP_MODE:
22206 return eSIR_INFRA_AP_MODE;
22207 case WDI_IBSS_MODE:
22208 return eSIR_IBSS_MODE;
22209 case WDI_BTAMP_STA_MODE:
22210 return eSIR_BTAMP_STA_MODE;
22211 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 case WDI_BSS_AUTO_MODE:
22214 return eSIR_AUTO_MODE;
22215 }
22216
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218}/*WDI_2_HAL_BSS_TYPE*/
22219
22220/*Convert WDI NW type into HAL NW type*/
22221WPT_STATIC WPT_INLINE tSirNwType
22222WDI_2_HAL_NW_TYPE
22223(
22224 WDI_NwType wdiNWType
22225)
22226{
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 the chances of getting inlined*/
22229 switch( wdiNWType )
22230 {
22231 case WDI_11A_NW_TYPE:
22232 return eSIR_11A_NW_TYPE;
22233 case WDI_11B_NW_TYPE:
22234 return eSIR_11B_NW_TYPE;
22235 case WDI_11G_NW_TYPE:
22236 return eSIR_11G_NW_TYPE;
22237 case WDI_11N_NW_TYPE:
22238 return eSIR_11N_NW_TYPE;
22239 }
22240
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022242}/*WDI_2_HAL_NW_TYPE*/
22243
22244/*Convert WDI chanel bonding type into HAL cb type*/
22245WPT_STATIC WPT_INLINE ePhyChanBondState
22246WDI_2_HAL_CB_STATE
22247(
22248 WDI_PhyChanBondState wdiCbState
22249)
22250{
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 the chances of getting inlined*/
22253 switch ( wdiCbState )
22254 {
22255 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22256 return PHY_SINGLE_CHANNEL_CENTERED;
22257 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22258 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22259 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22260 return PHY_DOUBLE_CHANNEL_CENTERED;
22261 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22262 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022263#ifdef WLAN_FEATURE_11AC
22264 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22265 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22266 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22267 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22268 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22269 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22270 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22271 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22272 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22273 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22274 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22275 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22276 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22277 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22278#endif
22279 case WDI_MAX_CB_STATE:
22280 default:
22281 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022282 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022283
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 return PHY_CHANNEL_BONDING_STATE_MAX;
22285}/*WDI_2_HAL_CB_STATE*/
22286
22287/*Convert WDI chanel bonding type into HAL cb type*/
22288WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22289WDI_2_HAL_HT_OPER_MODE
22290(
22291 WDI_HTOperatingMode wdiHTOperMode
22292)
22293{
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 the chances of getting inlined*/
22296 switch ( wdiHTOperMode )
22297 {
22298 case WDI_HT_OP_MODE_PURE:
22299 return eSIR_HT_OP_MODE_PURE;
22300 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22301 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22302 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22303 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22304 case WDI_HT_OP_MODE_MIXED:
22305 return eSIR_HT_OP_MODE_MIXED;
22306 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022307
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 return eSIR_HT_OP_MODE_MAX;
22309}/*WDI_2_HAL_HT_OPER_MODE*/
22310
22311/*Convert WDI mimo PS type into HAL mimo PS type*/
22312WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22313WDI_2_HAL_MIMO_PS
22314(
22315 WDI_HTMIMOPowerSaveState wdiHTOperMode
22316)
22317{
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 the chances of getting inlined*/
22320 switch ( wdiHTOperMode )
22321 {
22322 case WDI_HT_MIMO_PS_STATIC:
22323 return eSIR_HT_MIMO_PS_STATIC;
22324 case WDI_HT_MIMO_PS_DYNAMIC:
22325 return eSIR_HT_MIMO_PS_DYNAMIC;
22326 case WDI_HT_MIMO_PS_NA:
22327 return eSIR_HT_MIMO_PS_NA;
22328 case WDI_HT_MIMO_PS_NO_LIMIT:
22329 return eSIR_HT_MIMO_PS_NO_LIMIT;
22330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022331
Jeff Johnson295189b2012-06-20 16:38:30 -070022332 return eSIR_HT_MIMO_PS_MAX;
22333}/*WDI_2_HAL_MIMO_PS*/
22334
22335/*Convert WDI ENC type into HAL ENC type*/
22336WPT_STATIC WPT_INLINE tAniEdType
22337WDI_2_HAL_ENC_TYPE
22338(
22339 WDI_EncryptType wdiEncType
22340)
22341{
Jeff Johnsone7245742012-09-05 17:12:55 -070022342 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 the chances of getting inlined*/
22344 switch ( wdiEncType )
22345 {
22346 case WDI_ENCR_NONE:
22347 return eSIR_ED_NONE;
22348
22349 case WDI_ENCR_WEP40:
22350 return eSIR_ED_WEP40;
22351
22352 case WDI_ENCR_WEP104:
22353 return eSIR_ED_WEP104;
22354
22355 case WDI_ENCR_TKIP:
22356 return eSIR_ED_TKIP;
22357
22358 case WDI_ENCR_CCMP:
22359 return eSIR_ED_CCMP;
22360
22361 case WDI_ENCR_AES_128_CMAC:
22362 return eSIR_ED_AES_128_CMAC;
22363#if defined(FEATURE_WLAN_WAPI)
22364 case WDI_ENCR_WPI:
22365 return eSIR_ED_WPI;
22366#endif
22367 default:
22368 return eSIR_ED_NOT_IMPLEMENTED;
22369 }
22370
22371}/*WDI_2_HAL_ENC_TYPE*/
22372
22373/*Convert WDI WEP type into HAL WEP type*/
22374WPT_STATIC WPT_INLINE tAniWepType
22375WDI_2_HAL_WEP_TYPE
22376(
22377 WDI_WepType wdiWEPType
22378)
22379{
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 the chances of getting inlined*/
22382 switch ( wdiWEPType )
22383 {
22384 case WDI_WEP_STATIC:
22385 return eSIR_WEP_STATIC;
22386
22387 case WDI_WEP_DYNAMIC:
22388 return eSIR_WEP_DYNAMIC;
22389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022390
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 return eSIR_WEP_MAX;
22392}/*WDI_2_HAL_WEP_TYPE*/
22393
22394WPT_STATIC WPT_INLINE tSirLinkState
22395WDI_2_HAL_LINK_STATE
22396(
22397 WDI_LinkStateType wdiLinkState
22398)
22399{
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 the chances of getting inlined*/
22402 switch ( wdiLinkState )
22403 {
22404 case WDI_LINK_IDLE_STATE:
22405 return eSIR_LINK_IDLE_STATE;
22406
22407 case WDI_LINK_PREASSOC_STATE:
22408 return eSIR_LINK_PREASSOC_STATE;
22409
22410 case WDI_LINK_POSTASSOC_STATE:
22411 return eSIR_LINK_POSTASSOC_STATE;
22412
22413 case WDI_LINK_AP_STATE:
22414 return eSIR_LINK_AP_STATE;
22415
22416 case WDI_LINK_IBSS_STATE:
22417 return eSIR_LINK_IBSS_STATE;
22418
22419 case WDI_LINK_BTAMP_PREASSOC_STATE:
22420 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22421
22422 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22423 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22424
22425 case WDI_LINK_BTAMP_AP_STATE:
22426 return eSIR_LINK_BTAMP_AP_STATE;
22427
22428 case WDI_LINK_BTAMP_STA_STATE:
22429 return eSIR_LINK_BTAMP_STA_STATE;
22430
22431 case WDI_LINK_LEARN_STATE:
22432 return eSIR_LINK_LEARN_STATE;
22433
22434 case WDI_LINK_SCAN_STATE:
22435 return eSIR_LINK_SCAN_STATE;
22436
22437 case WDI_LINK_FINISH_SCAN_STATE:
22438 return eSIR_LINK_FINISH_SCAN_STATE;
22439
22440 case WDI_LINK_INIT_CAL_STATE:
22441 return eSIR_LINK_INIT_CAL_STATE;
22442
22443 case WDI_LINK_FINISH_CAL_STATE:
22444 return eSIR_LINK_FINISH_CAL_STATE;
22445
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 case WDI_LINK_LISTEN_STATE:
22447 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448
22449 default:
22450 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022452}
22453
Jeff Johnsone7245742012-09-05 17:12:55 -070022454/*Translate a STA Context from WDI into HAL*/
22455WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022456void
22457WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022458(
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 tConfigStaParams* phalConfigSta,
22460 WDI_ConfigStaReqInfoType* pwdiConfigSta
22461)
22462{
22463 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022464#ifdef WLAN_FEATURE_11AC
22465 /* Get the Version 1 Handler */
22466 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22467 if (WDI_getFwWlanFeatCaps(DOT11AC))
22468 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022469 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 }
22471#endif
22472 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 the chances of getting inlined*/
22474
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 wpalMemoryCopy(phalConfigSta->bssId,
22476 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22477
22478 wpalMemoryCopy(phalConfigSta->staMac,
22479 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
22481 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22482 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22483 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22484 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22485 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22486 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22487 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22488 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22489 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22490 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22491 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22492 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22493 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22494 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22495 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22496 phalConfigSta->action = pwdiConfigSta->wdiAction;
22497 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22498 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22499 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22500 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22501 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22502 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22503 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022504
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22506
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 pwdiConfigSta->wdiSupportedRates.opRateMode;
22509 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22513 }
22514 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22515 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22518 }
22519 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22520 {
22521 phalConfigSta->supportedRates.aniLegacyRates[i] =
22522 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22523 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22526 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22527 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22530 }
22531 phalConfigSta->supportedRates.rxHighestDataRate =
22532 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22533
Jeff Johnsone7245742012-09-05 17:12:55 -070022534#ifdef WLAN_FEATURE_11AC
22535 if(phalConfigSta_V1 != NULL)
22536 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022537 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22538 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22539 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22540 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022541 }
22542#endif
22543
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545
Jeff Johnsone7245742012-09-05 17:12:55 -070022546#ifdef WLAN_FEATURE_11AC
22547 if(phalConfigSta_V1 != NULL)
22548 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022549 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22550 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022551 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022552 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22553 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22554
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 }
22556#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022557}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022558
22559/*Translate a Rate set info from WDI into HAL*/
22560WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022561WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022562(
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 tSirMacRateSet* pHalRateSet,
22564 WDI_RateSet* pwdiRateSet
22565)
22566{
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22569
22570 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22571 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22572
22573 for ( i = 0; i < pHalRateSet->numRates; i++ )
22574 {
22575 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22576 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022577
Jeff Johnson295189b2012-06-20 16:38:30 -070022578}/*WDI_CopyWDIRateSetToHALRateSet*/
22579
22580
22581/*Translate an EDCA Parameter Record from WDI into HAL*/
22582WPT_STATIC WPT_INLINE void
22583WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022584(
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 tSirMacEdcaParamRecord* phalEdcaParam,
22586 WDI_EdcaParamRecord* pWDIEdcaParam
22587)
22588{
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 the chances of getting inlined*/
22591
22592 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22593 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22594 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22595 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22596
22597 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22598 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22599 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22600}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22601
22602
22603/*Copy a management frame header from WDI fmt into HAL fmt*/
22604WPT_STATIC WPT_INLINE void
22605WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22606(
22607 tSirMacMgmtHdr* pmacMgmtHdr,
22608 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22609)
22610{
22611 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22612 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22613 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22614 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22615 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22616 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22617 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22618 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22619 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22620 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22621 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22622
22623 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22624 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22625
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 pwdiMacMgmtHdr->bssId, 6);
22632
22633 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22634 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22635 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22636
22637}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22638
22639
22640/*Copy config bss parameters from WDI fmt into HAL fmt*/
22641WPT_STATIC WPT_INLINE void
22642WDI_CopyWDIConfigBSSToHALConfigBSS
22643(
22644 tConfigBssParams* phalConfigBSS,
22645 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22646)
22647{
22648
22649 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022650#ifdef WLAN_FEATURE_11AC
22651 /* Get the Version 1 Handler */
22652 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22653 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022654 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022655#endif
22656
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 wpalMemoryCopy( phalConfigBSS->bssId,
22658 pwdiConfigBSS->macBSSID,
22659 WDI_MAC_ADDR_LEN);
22660
22661#ifdef HAL_SELF_STA_PER_BSS
22662 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22663 pwdiConfigBSS->macSelfAddr,
22664 WDI_MAC_ADDR_LEN);
22665#endif
22666
22667 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22668
22669 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22670 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22671
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 pwdiConfigBSS->ucShortSlotTimeSupported;
22674 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22675 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22676 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22677 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22678 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22681 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22682 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22683 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22684 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22685 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22686 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22687 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22688 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22689 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22690 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22691
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 phalConfigBSS->htOperMode =
22693 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022694
22695 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22696 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22697 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22698 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22699
22700#ifdef WLAN_FEATURE_VOWIFI
22701 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22702#endif
22703
22704 /*! Used 32 as magic number because that is how the ssid is declared inside the
22705 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22708 pwdiConfigBSS->wdiSSID.ucLength : 32;
22709 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 pwdiConfigBSS->wdiSSID.sSSID,
22711 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022712
22713 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22714 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022715
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22717 &pwdiConfigBSS->wdiRateSet);
22718
22719 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22720
22721 if(phalConfigBSS->edcaParamsValid)
22722 {
22723 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22724 &pwdiConfigBSS->wdiBEEDCAParams);
22725 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22726 &pwdiConfigBSS->wdiBKEDCAParams);
22727 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22728 &pwdiConfigBSS->wdiVIEDCAParams);
22729 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22730 &pwdiConfigBSS->wdiVOEDCAParams);
22731 }
22732
Jeff Johnsone7245742012-09-05 17:12:55 -070022733 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022734
22735 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22736
22737#ifdef WLAN_FEATURE_VOWIFI_11R
22738
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022741
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 if( phalConfigBSS->extSetStaKeyParamValid )
22743 {
22744 /*-----------------------------------------------------------------------
22745 Copy the STA Key parameters into the HAL message
22746 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22749
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22752
22753 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22754
22755 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22756
22757 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22758
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22760 keyIndex++)
22761 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022762 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22764 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22765 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22766 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22767 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22768 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22775 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 WDI_MAX_KEY_LENGTH);
22778 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022779 }
22780 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22781 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 sizeof(phalConfigBSS->extSetStaKeyParam) );
22784 }
22785
22786#endif /*WLAN_FEATURE_VOWIFI_11R*/
22787
Jeff Johnsone7245742012-09-05 17:12:55 -070022788#ifdef WLAN_FEATURE_11AC
22789 if(phalConfigBSS_V1 != NULL)
22790 {
22791 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22792 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22793 }
22794#endif
22795
Jeff Johnson295189b2012-06-20 16:38:30 -070022796}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22797
22798
Jeff Johnsone7245742012-09-05 17:12:55 -070022799/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 pointed to by user data */
22801WPT_STATIC WPT_INLINE void
22802WDI_ExtractRequestCBFromEvent
22803(
22804 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 void** ppUserData
22807)
22808{
22809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22810 switch ( pEvent->wdiRequest )
22811 {
22812 case WDI_START_REQ:
22813 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22814 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22815 break;
22816 case WDI_STOP_REQ:
22817 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22818 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22819 break;
22820 case WDI_INIT_SCAN_REQ:
22821 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22822 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22823 break;
22824 case WDI_START_SCAN_REQ:
22825 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22826 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22827 break;
22828 case WDI_END_SCAN_REQ:
22829 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22830 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22831 break;
22832 case WDI_FINISH_SCAN_REQ:
22833 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22834 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22835 break;
22836 case WDI_JOIN_REQ:
22837 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22838 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22839 break;
22840 case WDI_CONFIG_BSS_REQ:
22841 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22842 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22843 break;
22844 case WDI_DEL_BSS_REQ:
22845 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22846 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22847 break;
22848 case WDI_POST_ASSOC_REQ:
22849 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22850 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22851 break;
22852 case WDI_DEL_STA_REQ:
22853 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22854 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22855 break;
22856 case WDI_DEL_STA_SELF_REQ:
22857 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22858 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22859 break;
22860
22861 case WDI_SET_BSS_KEY_REQ:
22862 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22863 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22864 break;
22865 case WDI_RMV_BSS_KEY_REQ:
22866 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22867 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22868 break;
22869 case WDI_SET_STA_KEY_REQ:
22870 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22871 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22872 break;
22873 case WDI_RMV_STA_KEY_REQ:
22874 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22875 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22876 break;
22877 case WDI_ADD_TS_REQ:
22878 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22879 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22880 break;
22881 case WDI_DEL_TS_REQ:
22882 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22883 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22884 break;
22885 case WDI_UPD_EDCA_PRMS_REQ:
22886 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22887 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22888 break;
22889 case WDI_ADD_BA_SESSION_REQ:
22890 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22891 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22892 break;
22893 case WDI_DEL_BA_REQ:
22894 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22895 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22896 break;
22897#ifdef FEATURE_WLAN_CCX
22898 case WDI_TSM_STATS_REQ:
22899 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22900 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22901 break;
22902#endif
22903 case WDI_CH_SWITCH_REQ:
22904 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22905 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22906 break;
22907 case WDI_CONFIG_STA_REQ:
22908 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22909 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22910 break;
22911 case WDI_SET_LINK_ST_REQ:
22912 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22913 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22914 break;
22915 case WDI_GET_STATS_REQ:
22916 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22917 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22918 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022919#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22920 case WDI_GET_ROAM_RSSI_REQ:
22921 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22922 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22923 break;
22924#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 case WDI_UPDATE_CFG_REQ:
22926 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22927 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22928 break;
22929 case WDI_ADD_BA_REQ:
22930 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22931 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22932 break;
22933 case WDI_TRIGGER_BA_REQ:
22934 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22935 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22936 break;
22937 case WDI_UPD_BCON_PRMS_REQ:
22938 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22939 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22940 break;
22941 case WDI_SND_BCON_REQ:
22942 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22943 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22944 break;
22945 case WDI_ENTER_BMPS_REQ:
22946 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22947 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22948 break;
22949 case WDI_EXIT_BMPS_REQ:
22950 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22951 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22952 break;
22953 case WDI_ENTER_UAPSD_REQ:
22954 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22955 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22956 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070022957 case WDI_EXIT_UAPSD_REQ:
22958 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22959 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22960 break;
22961 case WDI_SET_UAPSD_PARAM_REQ:
22962 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22963 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
22964 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 case WDI_UPDATE_UAPSD_PARAM_REQ:
22966 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22967 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22968 break;
22969 case WDI_CONFIGURE_RXP_FILTER_REQ:
22970 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22971 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22972 break;
22973 case WDI_SET_BEACON_FILTER_REQ:
22974 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22975 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22976 break;
22977 case WDI_REM_BEACON_FILTER_REQ:
22978 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22979 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022980 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 case WDI_SET_RSSI_THRESHOLDS_REQ:
22982 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22983 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22984 break;
22985 case WDI_HOST_OFFLOAD_REQ:
22986 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22987 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22988 break;
22989 case WDI_WOWL_ADD_BC_PTRN_REQ:
22990 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22991 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22992 break;
22993 case WDI_WOWL_DEL_BC_PTRN_REQ:
22994 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22995 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22996 break;
22997 case WDI_WOWL_ENTER_REQ:
22998 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22999 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23000 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023001 case WDI_WOWL_EXIT_REQ:
23002 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23003 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23004 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23006 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23007 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23008 break;
23009 case WDI_FLUSH_AC_REQ:
23010 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23011 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23012 break;
23013 case WDI_BTAMP_EVENT_REQ:
23014 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23015 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23016 break;
23017 case WDI_KEEP_ALIVE_REQ:
23018 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23019 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23020 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023021#if defined FEATURE_WLAN_SCAN_PNO
23022 case WDI_SET_PREF_NETWORK_REQ:
23023 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23024 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23025 break;
23026 case WDI_SET_RSSI_FILTER_REQ:
23027 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23028 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23029 break;
23030 case WDI_UPDATE_SCAN_PARAMS_REQ:
23031 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23032 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23033 break;
23034#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 case WDI_SET_TX_PER_TRACKING_REQ:
23036 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23037 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023038 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023039#if defined WLAN_FEATURE_PACKET_FILTERING
23040 case WDI_8023_MULTICAST_LIST_REQ:
23041 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23042 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23043 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023044 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23045 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23046 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23047 break;
23048 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23049 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23050 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23051 break;
23052 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23053 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23054 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23055 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023056#endif
23057 case WDI_SET_POWER_PARAMS_REQ:
23058 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23059 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23060 break;
23061#if defined WLAN_FEATURE_GTK_OFFLOAD
23062 case WDI_GTK_OFFLOAD_REQ:
23063 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23064 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23065 break;
23066 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23067 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23068 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23069 break;
23070#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023071
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 default:
23073 *ppfnReqCB = NULL;
23074 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 }
23077}/*WDI_ExtractRequestCBFromEvent*/
23078
23079
23080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 frame xtl is enabled for a particular STA.
23083
23084 WDI_PostAssocReq must have been called.
23085
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 @param uSTAIdx: STA index
23087
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 @see WDI_PostAssocReq
23089 @return Result of the function call
23090*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023091wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023092WDI_IsHwFrameTxTranslationCapable
23093(
23094 wpt_uint8 uSTAIdx
23095)
23096{
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 uma value*/
23099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 ------------------------------------------------------------------------*/
23102 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23103 {
23104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23105 "WDI API call before module is initialized - Fail request");
23106
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 }
23109
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023110#ifdef WLAN_SOFTAP_VSTA_FEATURE
23111 if (IS_VSTA_IDX(uSTAIdx))
23112 {
23113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23114 "STA %d is a Virtual STA, "
23115 "HW frame translation disabled", uSTAIdx);
23116 return eWLAN_PAL_FALSE;
23117 }
23118#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023119
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 return gWDICb.bFrameTransEnabled;
23121}/*WDI_IsHwFrameTxTranslationCapable*/
23122
23123#ifdef FEATURE_WLAN_SCAN_PNO
23124/**
23125 @brief WDI_SetPreferredNetworkList
23126
Jeff Johnsone7245742012-09-05 17:12:55 -070023127 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023128 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023129
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 wdiPNOScanCb: callback for passing back the response
23131 of the Set PNO operation received from the
23132 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023133
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023135 callback
23136
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 @return Result of the function call
23138*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023139WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023140WDI_SetPreferredNetworkReq
23141(
23142 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23143 WDI_PNOScanCb wdiPNOScanCb,
23144 void* pUserData
23145)
23146{
23147 WDI_EventInfoType wdiEventData = {{0}};
23148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23149
23150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 ------------------------------------------------------------------------*/
23153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23154 {
23155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23156 "WDI API call before module is initialized - Fail request");
23157
Jeff Johnsone7245742012-09-05 17:12:55 -070023158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023159 }
23160
23161 /*------------------------------------------------------------------------
23162 Fill in Event data and post to the Main FSM
23163 ------------------------------------------------------------------------*/
23164 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023167 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023168 wdiEventData.pUserData = pUserData;
23169
23170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23171}
23172
23173
23174/**
23175 @brief WDI_SetRssiFilterReq
23176
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023178 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023179
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 wdiRssiFilterCb: callback for passing back the response
23181 of the Set RSSI Filter operation received from the
23182 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023183
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 callback
23186
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 @return Result of the function call
23188*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023190WDI_SetRssiFilterReq
23191(
23192 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23193 WDI_RssiFilterCb wdiRssiFilterCb,
23194 void* pUserData
23195)
23196{
23197 WDI_EventInfoType wdiEventData = {{0}};
23198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23199
23200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023202 ------------------------------------------------------------------------*/
23203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23204 {
23205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23206 "WDI API call before module is initialized - Fail request");
23207
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 }
23210
23211 /*------------------------------------------------------------------------
23212 Fill in Event data and post to the Main FSM
23213 ------------------------------------------------------------------------*/
23214 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023215 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 wdiEventData.pUserData = pUserData;
23219
23220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23221}/*WDI_SetRssiFilterReq*/
23222
23223/**
23224 @brief WDI_UpdateScanParamsReq
23225
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023228
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 wdiUpdateScanParamsCb: callback for passing back the response
23230 of the Set PNO operation received from the
23231 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023232
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 callback
23235
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 @return Result of the function call
23237*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023239WDI_UpdateScanParamsReq
23240(
23241 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23242 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23243 void* pUserData
23244)
23245{
23246 WDI_EventInfoType wdiEventData = {{0}};
23247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23248
23249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 ------------------------------------------------------------------------*/
23252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23253 {
23254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23255 "WDI API call before module is initialized - Fail request");
23256
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 }
23259
23260 /*------------------------------------------------------------------------
23261 Fill in Event data and post to the Main FSM
23262 ------------------------------------------------------------------------*/
23263 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 wdiEventData.pUserData = pUserData;
23268
23269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23270}
23271
23272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023275
23276 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 pwdiPNOScanReqParams: pointer to the info received
23278 from upper layers
23279 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 and its size
23281
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 @return Result of the function call
23283*/
23284
23285WDI_Status
23286WDI_PackPreferredNetworkList
23287(
23288 WDI_ControlBlockType* pWDICtx,
23289 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23290 wpt_uint8** ppSendBuffer,
23291 wpt_uint16* pSize
23292)
23293{
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 wpt_uint16 usDataOffset = 0;
23296 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 /*-----------------------------------------------------------------------
23300 Get message buffer
23301 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023303 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023305 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 {
23307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23308 "Unable to get send buffer in Set PNO req %x ",
23309 pwdiPNOScanReqParams);
23310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 }
23313
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023314 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23315
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 /*-------------------------------------------------------------------------
23317 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23318 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023319 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023321 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23323
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023324 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23329
23330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23333 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23334 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23335
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023336 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 {
23338 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023339 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23341
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023342 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023344 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023345
23346 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023347 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023349
23350 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023351 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023356 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023357 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23358 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23359 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23360 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023361
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023362 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023364 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023365
23366 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023367 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23369
23370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023372 pPrefNetwListParams->aNetworks[i].ssId.length,
23373 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 }
23375
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023376 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23379 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23380 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23381
23382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023384 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23386 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23387
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023388 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023390 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023392 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23394 }
23395
23396 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023397 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23399 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23400 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023402
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023403 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023405 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023406
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023407 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23409 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23410 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023411 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023412
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023413 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023415 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023416
23417 /*Set the output values*/
23418 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023420
23421 return WDI_STATUS_SUCCESS;
23422}/*WDI_PackPreferredNetworkList*/
23423
23424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023427
23428 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 pwdiPNOScanReqParams: pointer to the info received
23430 from upper layers
23431 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 and its size
23433
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 @return Result of the function call
23435*/
23436
23437WDI_Status
23438WDI_PackPreferredNetworkListNew
23439(
23440 WDI_ControlBlockType* pWDICtx,
23441 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23442 wpt_uint8** ppSendBuffer,
23443 wpt_uint16* pSize
23444)
23445{
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 wpt_uint16 usDataOffset = 0;
23448 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023449 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023451
23452 /*-----------------------------------------------------------------------
23453 Get message buffer
23454 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023455 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023456 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023458 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 {
23460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23461 "Unable to get send buffer in Set PNO req %x ",
23462 pwdiPNOScanReqParams);
23463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 }
23466
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023467 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23468
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 /*-------------------------------------------------------------------------
23470 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23471 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023472 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023474 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23476
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023477 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023478 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23482
23483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23486 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23487 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23488
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023489 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 {
23491 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023492 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023493 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23494
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023495 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023497 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023498
23499 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023500 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023502
23503 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023504 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023506
23507 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023508 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023510
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023513 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23515
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023516 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023518 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023519
23520 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023521 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23523
23524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023526 pPrefNetwListParams->aNetworks[i].ssId.length,
23527 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 }
23529
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023530 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023531 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023532 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23533 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23534 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23535
23536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023538 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23540 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23541
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023542 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023544 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023546 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23548 }
23549
23550 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023551 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23553 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23554 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023556
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023557 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023559 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023560
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023561 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23563 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23564 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023566
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023567 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023569 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023570
Jeff Johnson295189b2012-06-20 16:38:30 -070023571
23572 /*Set the output values*/
23573 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575
23576 return WDI_STATUS_SUCCESS;
23577}/*WDI_PackPreferredNetworkListNew*/
23578
23579/**
23580 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023581
23582 @param pWDICtx: pointer to the WLAN DAL context
23583 pEventData: pointer to the event information structure
23584
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 @return Result of the function call
23586*/
23587WDI_Status
23588WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023589(
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 WDI_ControlBlockType* pWDICtx,
23591 WDI_EventInfoType* pEventData
23592)
23593{
23594 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23595 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599
23600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 -------------------------------------------------------------------------*/
23603 if (( NULL == pEventData ) ||
23604 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23605 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23606 {
23607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 }
23612
23613 /*-------------------------------------------------------------------------
23614 Pack the PNO request structure based on version
23615 -------------------------------------------------------------------------*/
23616 if ( pWDICtx->wdiPNOVersion > 0 )
23617 {
23618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023619 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 pWDICtx->wdiPNOVersion);
23621
23622 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23623 &pSendBuffer, &usSendSize);
23624 }
23625 else
23626 {
23627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023628 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023629 pWDICtx->wdiPNOVersion);
23630
23631 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23632 &pSendBuffer, &usSendSize);
23633 }
23634
23635 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23636 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23637 {
23638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023639 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 }
23643
23644 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023646
23647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23651 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023652}
23653
23654/**
23655 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023656
23657 @param pWDICtx: pointer to the WLAN DAL context
23658 pEventData: pointer to the event information structure
23659
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 @see
23661 @return Result of the function call
23662*/
23663WDI_Status
23664WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023665(
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 WDI_ControlBlockType* pWDICtx,
23667 WDI_EventInfoType* pEventData
23668)
23669{
23670 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23671 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 wpt_uint16 usDataOffset = 0;
23674 wpt_uint16 usSendSize = 0;
23675 wpt_uint8 ucRssiThreshold;
23676
23677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 -------------------------------------------------------------------------*/
23680 if (( NULL == pEventData ) ||
23681 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23682 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23683 {
23684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 }
23689
23690 /*-----------------------------------------------------------------------
23691 Get message buffer
23692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 sizeof(ucRssiThreshold),
23695 &pSendBuffer, &usDataOffset, &usSendSize))||
23696 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23697 {
23698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23699 "Unable to get send buffer in Set PNO req %x %x %x",
23700 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 }
23704
23705 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23706
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 wpalMemoryCopy( pSendBuffer+usDataOffset,
23708 &ucRssiThreshold,
23709 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023710
23711 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713
23714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023715 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23718 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023719}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023720#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
23721/**
23722 @brief WDI_StartRoamCandidateLookupReq
Jeff Johnson295189b2012-06-20 16:38:30 -070023723
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023724 @param pwdiRoamCandidateLookupReqParams: the LookupReq as specified
23725 by the Device Interface
23726
23727 wdiRoamOffloadScancb: callback for passing back the response
23728 of the Roam Candidate Lookup Req operation received from the
23729 device
23730
23731 pUserData: user data will be passed back with the
23732 callback
23733 @return Result of the function call
23734*/
23735WDI_Status
23736WDI_StartRoamCandidateLookupReq
23737(
23738 WDI_RoamCandidateLookupReqParamsType* pwdiRoamCandidateLookupReqParams,
23739 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
23740 void* pUserData
23741)
23742{
23743 WDI_EventInfoType wdiEventData = {{0}};
23744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23745
23746 /*------------------------------------------------------------------------
23747 Sanity Check
23748 ------------------------------------------------------------------------*/
23749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23750 {
23751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23752 "WDI API call before module is initialized - Fail request");
23753
23754 return WDI_STATUS_E_NOT_ALLOWED;
23755 }
23756
23757 /*------------------------------------------------------------------------
23758 Fill in Event data and post to the Main FSM
23759 ------------------------------------------------------------------------*/
23760 wdiEventData.wdiRequest = WDI_START_ROAM_CANDIDATE_LOOKUP_REQ;
23761 wdiEventData.pEventData = pwdiRoamCandidateLookupReqParams;
23762 wdiEventData.uEventDataSize = sizeof(*pwdiRoamCandidateLookupReqParams);
23763 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
23764 wdiEventData.pUserData = pUserData;
23765
23766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23767}
23768
23769void
23770WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
23771{
23772 switch (wdiEdType)
23773 {
23774 case WDI_ED_NONE:
23775 *EdType = eED_NONE;
23776 break;
23777 case WDI_ED_WEP40:
23778 case WDI_ED_WEP104:
23779 *EdType = eED_WEP;
23780 break;
23781 case WDI_ED_TKIP:
23782 *EdType = eED_TKIP;
23783 break;
23784 case WDI_ED_CCMP:
23785#ifdef WLAN_FEATURE_11W
23786 case WDI_ED_AES_128_CMAC:
23787#endif
23788 *EdType = eED_CCMP;
23789 break;
23790#ifdef FEATURE_WLAN_WAPI
23791 case WDI_ED_WPI:
23792 *EdType = eED_WPI;
23793 break;
23794#endif
23795 case WDI_ED_ANY:
23796 *EdType = eED_ANY;
23797 break;
23798
23799 default:
23800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23801 "%s: Unknown Encryption Type", __func__);
23802 break;
23803 }
23804}
23805
23806/**
23807 @brief Helper function to pack Start Roam Candidate Lookup
23808 Request parameters
23809
23810 @param pWDICtx: pointer to the WLAN DAL context
23811 pwdiRoamCandidateLookupReqParams: pointer to the info received
23812 from upper layers
23813 ppSendBuffer, pSize - out pointers of the packed buffer
23814 and its size
23815
23816 @return Result of the function call
23817*/
23818
23819WDI_Status
23820WDI_PackStartRoamCandidateLookup
23821(
23822 WDI_ControlBlockType* pWDICtx,
23823 WDI_RoamCandidateLookupReqParamsType* pwdiRoamCandidateLookupReqParams,
23824 wpt_uint8** ppSendBuffer,
23825 wpt_uint16* pSize
23826)
23827{
23828 wpt_uint8* pSendBuffer = NULL;
23829 wpt_uint16 usDataOffset = 0;
23830 wpt_uint16 usSendSize = 0;
23831 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
23832 wpt_uint8 i;
23833 /*-----------------------------------------------------------------------
23834 Get message buffer
23835 -----------------------------------------------------------------------*/
23836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_ROAM_CANDIDATE_LOOKUP_REQ,
23837 sizeof(tRoamCandidateListParams),
23838 &pSendBuffer, &usDataOffset, &usSendSize))||
23839 ( usSendSize < (usDataOffset + sizeof(tpRoamCandidateListParams) )))
23840 {
23841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23842 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
23843 pwdiRoamCandidateLookupReqParams);
23844 WDI_ASSERT(0);
23845 return WDI_STATUS_E_FAILURE;
23846 }
23847 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
23848 wpalMemoryZero(pRoamCandidateListParams, sizeof(tpRoamCandidateListParams));
23849 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
23850 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
23851 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
23852 HAL_MAC_ADDR_LEN);
23853 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
23854 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
23855 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
23856 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
23857 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
23858
23859 pRoamCandidateListParams->ConnectedNetwork.ssId.length
23860 = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
23861 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
23862 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
23863 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
23864 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
23865 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
23866 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
23867 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
23868 pRoamCandidateListParams->ChannelCacheType = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
23869 pRoamCandidateListParams->LookupThreshold = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
23870 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
23871 pRoamCandidateListParams->Command = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.Command ;
23872 pRoamCandidateListParams->StartScanReason = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
23873 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
23874 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
23875 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
23876 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
23877 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
23878 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
23879 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
23880 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
23881 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
23882 pRoamCandidateListParams->ValidChannelCount = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
23883
23884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23885 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,StartScanReason=%d, NeighborScanTimerPeriod=%d, NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d, mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d\n",
23886 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId, pRoamCandidateListParams->RoamScanOffloadEnabled,
23887 pRoamCandidateListParams->Command,pRoamCandidateListParams->StartScanReason,
23888 pRoamCandidateListParams->NeighborScanTimerPeriod,pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
23889 pRoamCandidateListParams->NeighborScanChannelMinTime,pRoamCandidateListParams->NeighborScanChannelMaxTime,
23890 pRoamCandidateListParams->EmptyRefreshScanPeriod,pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
23891 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
23892 pRoamCandidateListParams->ConnectedNetwork.authentication, pRoamCandidateListParams->ConnectedNetwork.encryption,
23893 pRoamCandidateListParams->ConnectedNetwork.mcencryption);
23894 pRoamCandidateListParams->us24GProbeSize =
23895 (pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
23896 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
23897 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
23898 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
23899 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
23900 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
23901 pRoamCandidateListParams->us24GProbeSize);
23902 pRoamCandidateListParams->us5GProbeSize =
23903 (pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
23904 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
23905 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
23906 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
23907 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
23908 pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
23909 pRoamCandidateListParams->us5GProbeSize);
23910 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
23911 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamCandidateLookupReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
23912
23913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,"Valid Channel List");
23914 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
23915 {
23916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,"%d", pRoamCandidateListParams->ValidChannelList[i]);
23917 }
23918
23919
23920 /*Set the output values*/
23921 *ppSendBuffer = pSendBuffer;
23922 *pSize = usSendSize;
23923 return WDI_STATUS_SUCCESS;
23924}/*WDI_PackStartRoamCandidateLookup*/
23925
23926/**
23927 @brief Process Start Roam Candidate Lookup Request function
23928
23929 @param pWDICtx: pointer to the WLAN DAL context
23930 pEventData: pointer to the event information structure
23931
23932 @return Result of the function call
23933*/
23934WDI_Status
23935WDI_ProcessStartRoamCandidatelookupReq
23936(
23937 WDI_ControlBlockType* pWDICtx,
23938 WDI_EventInfoType* pEventData
23939)
23940{
23941 WDI_RoamCandidateLookupReqParamsType* pwdiRoamCandidateLookupReqParams = NULL;
23942 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
23943 wpt_uint8* pSendBuffer = NULL;
23944 wpt_uint16 usSendSize = 0;
23945 WDI_Status wdiStatus;
23946 /*-------------------------------------------------------------------------
23947 Sanity check
23948 -------------------------------------------------------------------------*/
23949 if (( NULL == pEventData ) ||
23950 ( NULL == (pwdiRoamCandidateLookupReqParams = (WDI_RoamCandidateLookupReqParamsType*)pEventData->pEventData)) ||
23951 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
23952 {
23953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23954 "%s: Invalid parameters", __func__);
23955 WDI_ASSERT(0);
23956 return WDI_STATUS_E_FAILURE;
23957 }
23958
23959 /*-------------------------------------------------------------------------
23960 Pack the Start Roam Candidate Lookup request structure based on version
23961 -------------------------------------------------------------------------*/
23962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23963 "%s: Packing Roam Candidate Lookup request ", __func__);
23964
23965 wdiStatus = WDI_PackStartRoamCandidateLookup( pWDICtx, pwdiRoamCandidateLookupReqParams,
23966 &pSendBuffer, &usSendSize);
23967
23968 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23969 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23970 {
23971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23972 "%s: failed to pack request parameters", __func__);
23973 WDI_ASSERT(0);
23974 return wdiStatus;
23975 }
23976
23977 pWDICtx->wdiReqStatusCB = pwdiRoamCandidateLookupReqParams->wdiReqStatusCB;
23978 pWDICtx->pReqStatusUserData = pwdiRoamCandidateLookupReqParams->pUserData;
23979
23980 /*-------------------------------------------------------------------------
23981 Send WDI_START_ROAM_CANDIDATE_LOOKUP_REQ to HAL
23982 -------------------------------------------------------------------------*/
23983 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23984 wdiRoamOffloadScancb, pEventData->pUserData, WDI_START_ROAM_CANDIDATE_LOOKUP_RESP);
23985}
23986
23987/**
23988 @brief Process Start Roam Candidate Lookup Rsp function (called when a
23989 response is being received over the bus from HAL)
23990
23991 @param pWDICtx: pointer to the WLAN DAL context
23992 pEventData: pointer to the event information structure
23993
23994 @see
23995 @return Result of the function call
23996*/
23997WDI_Status
23998WDI_ProcessStartRoamCandidatelookupRsp
23999(
24000 WDI_ControlBlockType* pWDICtx,
24001 WDI_EventInfoType* pEventData
24002)
24003{
24004 WDI_Status wdiStatus;
24005 eHalStatus halStatus;
24006 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24007
24008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24009
24010 /*-------------------------------------------------------------------------
24011 Sanity check
24012 -------------------------------------------------------------------------*/
24013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24014 ( NULL == pEventData->pEventData ))
24015 {
24016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24017 "%s: Invalid parameters", __func__);
24018 WDI_ASSERT(0);
24019 return WDI_STATUS_E_FAILURE;
24020 }
24021
24022 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24023
24024 /*-------------------------------------------------------------------------
24025 Extract response and send it to UMAC
24026 -------------------------------------------------------------------------*/
24027 halStatus = *((eHalStatus*)pEventData->pEventData);
24028 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24029
24030 /*Notify UMAC*/
24031 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24032
24033 return WDI_STATUS_SUCCESS;
24034}/*WDI_ProcessStartRoamCandidatelookupRsp*/
24035#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024036
24037/**
24038 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024039
24040 @param pWDICtx: pointer to the WLAN DAL context
24041 pEventData: pointer to the event information structure
24042
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 @see
24044 @return Result of the function call
24045*/
24046WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024047WDI_PackUpdateScanParamsReq
24048(
24049 WDI_ControlBlockType* pWDICtx,
24050 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24051 wpt_uint8** ppSendBuffer,
24052 wpt_uint16* pSize
24053)
24054{
24055 wpt_uint8* pSendBuffer = NULL;
24056 wpt_uint16 usDataOffset = 0;
24057 wpt_uint16 usSendSize = 0;
24058 tUpdateScanParams updateScanParams = {0};
24059
24060
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024062 "Begin WDI Update Scan Parameters Old Style Params");
24063 /*-----------------------------------------------------------------------
24064 Get message buffer
24065 -----------------------------------------------------------------------*/
24066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24067 sizeof(updateScanParams),
24068 &pSendBuffer, &usDataOffset, &usSendSize))||
24069 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24070 {
24071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24072 "Unable to get send buffer in Update Scan Params req %x",
24073 pwdiUpdateScanParams);
24074 WDI_ASSERT(0);
24075 return WDI_STATUS_E_FAILURE;
24076 }
24077
24078 //
24079 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24080 //
24081
24082 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24083 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24084
24085 updateScanParams.ucChannelCount =
24086 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24087 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24088 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24089 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24090
24091 wpalMemoryCopy( updateScanParams.aChannels,
24092 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24093 updateScanParams.ucChannelCount);
24094
24095
24096 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24097 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24098 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24099 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24100 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24101
24102 wpalMemoryCopy( pSendBuffer+usDataOffset,
24103 &updateScanParams,
24104 sizeof(updateScanParams));
24105
24106 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24107 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24108
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024110 "End Update Scan Parameters Old Style");
24111
24112 /*Set the output values*/
24113 *ppSendBuffer = pSendBuffer;
24114 *pSize = usSendSize;
24115
24116 return WDI_STATUS_SUCCESS;
24117}
24118
24119/**
24120 @brief Process Update Scan Params function
24121
24122 @param pWDICtx: pointer to the WLAN DAL context
24123 pEventData: pointer to the event information structure
24124
24125 @see
24126 @return Result of the function call
24127*/
24128WDI_Status
24129WDI_PackUpdateScanParamsReqEx
24130(
24131 WDI_ControlBlockType* pWDICtx,
24132 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24133 wpt_uint8** ppSendBuffer,
24134 wpt_uint16* pSize
24135)
24136{
24137 wpt_uint8* pSendBuffer = NULL;
24138 wpt_uint16 usDataOffset = 0;
24139 wpt_uint16 usSendSize = 0;
24140 tUpdateScanParamsEx updateScanParams = {0};
24141
24142
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024143 /*-----------------------------------------------------------------------
24144 Get message buffer
24145 -----------------------------------------------------------------------*/
24146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24147 sizeof(updateScanParams),
24148 &pSendBuffer, &usDataOffset, &usSendSize))||
24149 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24150 {
24151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24152 "Unable to get send buffer in Update Scan Params Ex req %x",
24153 pwdiUpdateScanParams);
24154 WDI_ASSERT(0);
24155 return WDI_STATUS_E_FAILURE;
24156 }
24157
24158 //
24159 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24160 //
24161
24162 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24163 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24164
24165 updateScanParams.ucChannelCount =
24166 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24167 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24168 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24169 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24170
24171 wpalMemoryCopy( updateScanParams.aChannels,
24172 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24173 updateScanParams.ucChannelCount);
24174
24175
24176 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24177 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24178 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24179 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24180 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24181
24182 wpalMemoryCopy( pSendBuffer+usDataOffset,
24183 &updateScanParams,
24184 sizeof(updateScanParams));
24185
24186 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24187 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24188
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024189 /*Set the output values*/
24190 *ppSendBuffer = pSendBuffer;
24191 *pSize = usSendSize;
24192
24193 return WDI_STATUS_SUCCESS;
24194}
24195
24196/**
24197 @brief Process Update Scan Params function
24198
24199 @param pWDICtx: pointer to the WLAN DAL context
24200 pEventData: pointer to the event information structure
24201
24202 @see
24203 @return Result of the function call
24204*/
24205WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024206WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024207(
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 WDI_ControlBlockType* pWDICtx,
24209 WDI_EventInfoType* pEventData
24210)
24211{
24212 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24213 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024215 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024216 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024220 -------------------------------------------------------------------------*/
24221 if (( NULL == pEventData ) ||
24222 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24223 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24224 {
24225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 }
24230
24231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24232 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024233
24234 //
24235 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24236 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024237 if ( pWDICtx->wlanVersion.revision < 1 )
24238 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024239 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024240 &pSendBuffer, &usSendSize);
24241 }
24242 else
24243 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024244 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24245 &pSendBuffer, &usSendSize);
24246 }
24247
24248 if(WDI_STATUS_SUCCESS != wdiStatus)
24249 {
24250 //memory allocation failed
24251 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024252 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024253
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024255 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024258 wdiUpdateScanParamsCb, pEventData->pUserData,
24259 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024260}
24261
24262/**
24263 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024264
24265 @param pWDICtx: pointer to the WLAN DAL context
24266 pEventData: pointer to the event information structure
24267
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 @see
24269 @return Result of the function call
24270*/
24271WDI_Status
24272WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024273(
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 WDI_ControlBlockType* pWDICtx,
24275 WDI_EventInfoType* pEventData
24276)
24277{
24278 WDI_LowLevelIndType wdiInd;
24279 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
24280
24281
24282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 -------------------------------------------------------------------------*/
24285 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24286 ( NULL == pEventData->pEventData ))
24287 {
24288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 }
24293
24294 /*-------------------------------------------------------------------------
24295 Extract indication and send it to UMAC
24296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
24298 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 sizeof(tPrefNetwFoundParams));
24300
24301 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024302 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024303
24304 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
24305
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24311 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24313
24314 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
24315 prefNetwFoundInd.prefNetwFoundParams.rssi;
24316
24317 // DEBUG
24318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24319 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24320 wdiInd.wdiIndicationType,
24321 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24322 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24323
ltimariu034f7d62013-01-24 18:54:33 -080024324 if ( pWDICtx->wdiLowLevelIndCB )
24325 {
24326 /*Notify UMAC*/
24327 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24328 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024329
24330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024331}
24332
24333/**
24334 @brief Process PNO Rsp function (called when a
24335 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024336
24337 @param pWDICtx: pointer to the WLAN DAL context
24338 pEventData: pointer to the event information structure
24339
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 @see
24341 @return Result of the function call
24342*/
24343WDI_Status
24344WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024345(
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 WDI_ControlBlockType* pWDICtx,
24347 WDI_EventInfoType* pEventData
24348)
24349{
24350 WDI_Status wdiStatus;
24351 eHalStatus halStatus;
24352 WDI_PNOScanCb wdiPNOScanCb = NULL;
24353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24354
24355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 -------------------------------------------------------------------------*/
24358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24359 ( NULL == pEventData->pEventData ))
24360 {
24361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 }
24366
24367
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369
24370 /*-------------------------------------------------------------------------
24371 Extract response and send it to UMAC
24372 -------------------------------------------------------------------------*/
24373 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024375
24376 /*Notify UMAC*/
24377 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24378
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024380}/*WDI_ProcessSetPreferredNetworkRsp*/
24381
24382/**
24383 @brief Process RSSI Filter Rsp function (called when a
24384 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024385
24386 @param pWDICtx: pointer to the WLAN DAL context
24387 pEventData: pointer to the event information structure
24388
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 @see
24390 @return Result of the function call
24391*/
24392WDI_Status
24393WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024394(
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 WDI_ControlBlockType* pWDICtx,
24396 WDI_EventInfoType* pEventData
24397)
24398{
24399 WDI_Status wdiStatus;
24400 eHalStatus halStatus;
24401 WDI_RssiFilterCb wdiRssiFilterCb;
24402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24403
24404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 -------------------------------------------------------------------------*/
24407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24408 ( NULL == pEventData->pEventData ))
24409 {
24410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 }
24415
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417
24418 /*-------------------------------------------------------------------------
24419 Extract response and send it to UMAC
24420 -------------------------------------------------------------------------*/
24421 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024423
24424 /*Notify UMAC*/
24425 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24426
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024428}/*WDI_ProcessSetRssiFilterRsp*/
24429
24430/**
24431 @brief Process Update Scan Params Rsp function (called when a
24432 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024433
24434 @param pWDICtx: pointer to the WLAN DAL context
24435 pEventData: pointer to the event information structure
24436
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 @see
24438 @return Result of the function call
24439*/
24440WDI_Status
24441WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024442(
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 WDI_ControlBlockType* pWDICtx,
24444 WDI_EventInfoType* pEventData
24445)
24446{
24447 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024448 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024450 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24452
24453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 -------------------------------------------------------------------------*/
24456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24457 ( NULL == pEventData->pEventData ))
24458 {
24459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 }
24464
24465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024466 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024467
Jeff Johnsone7245742012-09-05 17:12:55 -070024468 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024469
24470 /*-------------------------------------------------------------------------
24471 Extract response and send it to UMAC
24472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24474 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 sizeof(halUpdScanParams.status));
24476
24477 uStatus = halUpdScanParams.status;
24478
24479 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024481
24482 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024486
24487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024488 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 halUpdScanParams.status);
24490
24491 /*Notify UMAC*/
24492 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24493
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024495}
24496#endif // FEATURE_WLAN_SCAN_PNO
24497
24498#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024500WDI_8023MulticastListReq
24501(
24502 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24503 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24504 void* pUserData
24505)
24506{
24507 WDI_EventInfoType wdiEventData;
24508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24509
24510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024511 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024512
24513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 ------------------------------------------------------------------------*/
24516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24517 {
24518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24519 "WDI API call before module is initialized - Fail request");
24520
Jeff Johnsone7245742012-09-05 17:12:55 -070024521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 }
24523
24524 /*------------------------------------------------------------------------
24525 Fill in Event data and post to the Main FSM
24526 ------------------------------------------------------------------------*/
24527 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 wdiEventData.pUserData = pUserData;
24532
24533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24534}
24535
Jeff Johnsone7245742012-09-05 17:12:55 -070024536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024537WDI_ReceiveFilterSetFilterReq
24538(
24539 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24540 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24541 void* pUserData
24542)
24543{
24544 WDI_EventInfoType wdiEventData;
24545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24546
24547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024548 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024549
24550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024551 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 ------------------------------------------------------------------------*/
24553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24554 {
24555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24556 "WDI API call before module is initialized - Fail request");
24557
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 }
24560
24561 /*------------------------------------------------------------------------
24562 Fill in Event data and post to the Main FSM
24563 ------------------------------------------------------------------------*/
24564 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24566 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024567 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24568 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 wdiEventData.pUserData = pUserData;
24571
24572
24573 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24574}
24575
Jeff Johnsone7245742012-09-05 17:12:55 -070024576WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024577WDI_FilterMatchCountReq
24578(
24579 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24580 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24581 void* pUserData
24582)
24583{
24584 WDI_EventInfoType wdiEventData;
24585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24586
24587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024588 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024589
24590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 ------------------------------------------------------------------------*/
24593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24594 {
24595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24596 "WDI API call before module is initialized - Fail request");
24597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 }
24600
24601 /*------------------------------------------------------------------------
24602 Fill in Event data and post to the Main FSM
24603 ------------------------------------------------------------------------*/
24604 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024605 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 wdiEventData.pUserData = pUserData;
24609
24610
24611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24612}
24613
Jeff Johnsone7245742012-09-05 17:12:55 -070024614WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024615WDI_ReceiveFilterClearFilterReq
24616(
24617 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24618 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24619 void* pUserData
24620)
24621{
24622 WDI_EventInfoType wdiEventData;
24623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24624
24625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024626 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024627
24628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 ------------------------------------------------------------------------*/
24631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24632 {
24633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24634 "WDI API call before module is initialized - Fail request");
24635
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 }
24638
24639 /*------------------------------------------------------------------------
24640 Fill in Event data and post to the Main FSM
24641 ------------------------------------------------------------------------*/
24642 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024643 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024644 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 wdiEventData.pUserData = pUserData;
24647
24648
24649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24650}
24651
24652/**
24653 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024654
24655 @param pWDICtx: pointer to the WLAN DAL context
24656 pEventData: pointer to the event information structure
24657
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 @see
24659 @return Result of the function call
24660*/
24661WDI_Status
24662WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024663(
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 WDI_ControlBlockType* pWDICtx,
24665 WDI_EventInfoType* pEventData
24666)
24667{
24668 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24669 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 wpt_uint16 usDataOffset = 0;
24672 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024673 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024674 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024675 wpt_uint8 ucCurrentBSSSesIdx = 0;
24676 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677
24678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024679 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024680
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024681 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24682 if( NULL == pRcvFltMcAddrListType )
24683 {
24684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24685 "Failed to alloc in WDI_Process8023MulticastListReq");
24686 return WDI_STATUS_E_FAILURE;
24687 }
24688
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 -------------------------------------------------------------------------*/
24692 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024695 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024696 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24697 {
24698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024699 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024700 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024702 return WDI_STATUS_E_FAILURE;
24703 }
24704
24705 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24706 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24707 &pBSSSes);
24708 if ( NULL == pBSSSes )
24709 {
24710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024711 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024712 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 }
24715
24716 /*-----------------------------------------------------------------------
24717 Get message buffer
24718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24720 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024721 sizeof(tHalRcvFltMcAddrListType),
24722 &pSendBuffer, &usDataOffset, &usSendSize))||
24723 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24724 {
24725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24726 "Unable to get send buffer in "
24727 "WDI_Process8023MulticastListReq() %x %x %x",
24728 pEventData, pwdiFltPktSetMcListReqParamsType,
24729 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070024730 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024733 }
24734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024735 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024737 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024739 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24741 sizeof(tSirMacAddr));
24742 }
24743
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024744 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024746 pRcvFltMcAddrListType,
24747 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024748
24749 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024750 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024751
24752
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024753 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024760}
24761
24762/**
24763 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024764
24765 @param pWDICtx: pointer to the WLAN DAL context
24766 pEventData: pointer to the event information structure
24767
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 @see
24769 @return Result of the function call
24770*/
24771WDI_Status
24772WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024773(
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 WDI_ControlBlockType* pWDICtx,
24775 WDI_EventInfoType* pEventData
24776)
24777{
24778 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24779 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 wpt_uint16 usDataOffset = 0;
24782 wpt_uint16 usSendSize = 0;
24783 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024784 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 wpt_uint8 ucCurrentBSSSesIdx = 0;
24787 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024788 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24789 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024790
24791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024792 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024793
24794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 -------------------------------------------------------------------------*/
24797 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024798 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024800 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024801 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24802 {
24803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024806 return WDI_STATUS_E_FAILURE;
24807 }
24808
24809 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24810 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24811 &pBSSSes);
24812 if ( NULL == pBSSSes )
24813 {
24814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024815 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 }
24818
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024819 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24820 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024821
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024822 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24823 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24824 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24825
24826 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24827 usSessRcvPktFilterCfgSize);
24828
24829 if(NULL == pSessRcvPktFilterCfg)
24830 {
24831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24832 "%s: Failed to allocate memory for "
24833 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024834 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024835 WDI_ASSERT(0);
24836 return WDI_STATUS_E_FAILURE;
24837 }
24838
24839 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24840
24841 /*-----------------------------------------------------------------------
24842 Get message buffer
24843 -----------------------------------------------------------------------*/
24844
24845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24846 usSessRcvPktFilterCfgSize,
24847 &pSendBuffer, &usDataOffset, &usSendSize))||
24848 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24849 {
24850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24851 "Unable to get send buffer in "
24852 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24853 pEventData, pwdiSetRcvPktFilterReqInfo,
24854 wdiReceiveFilterSetFilterCb);
24855 WDI_ASSERT(0);
24856 wpalMemoryFree(pSessRcvPktFilterCfg);
24857 return WDI_STATUS_E_FAILURE;
24858 }
24859
24860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24861 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24862 usSendSize,pSessRcvPktFilterCfg);
24863
24864 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24865 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24866 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24867 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24868
24869 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24870
24871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24872 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24873 pSessRcvPktFilterCfg->filterType);
24874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24875 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24876 pSessRcvPktFilterCfg->coleasceTime);
24877
24878 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24879 {
24880 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24881 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24882 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24883 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24884 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24885 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24886 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24887 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24888
24889 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24890 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24891 8);
24892 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24893 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24894 8);
24895
24896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24897 "Out:Proto %d Comp Flag %d \n",
24898 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24899 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24900
24901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24902 "Data Offset %d Data Len %d\n",
24903 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24904 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24905
24906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24907 "CData: %d:%d:%d:%d:%d:%d\n",
24908 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24909 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24910 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24911 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24912 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24913 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24914
24915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24916 "MData: %d:%d:%d:%d:%d:%d\n",
24917 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24918 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24919 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24920 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24921 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24922 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24923 }
24924
24925 wpalMemoryCopy( pSendBuffer+usDataOffset,
24926 pSessRcvPktFilterCfg,
24927 usSessRcvPktFilterCfgSize);
24928
24929
24930 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24931 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24932
24933 wpalMemoryFree(pSessRcvPktFilterCfg);
24934
24935 }
24936 /*If SLM_SESSIONIZATION is not supported then do this */
24937 else
24938 {
24939 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24940 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24941 * sizeof(tHalRcvPktFilterParams));
24942
24943 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 usRcvPktFilterCfgSize);
24945
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024946 if(NULL == pRcvPktFilterCfg)
24947 {
24948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24949 "%s: Failed to allocate memory for "
24950 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024951 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024952 WDI_ASSERT(0);
24953 return WDI_STATUS_E_FAILURE;
24954 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024955
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024956 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024958 /*-----------------------------------------------------------------------
24959 Get message buffer
24960 -----------------------------------------------------------------------*/
24961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 usRcvPktFilterCfgSize,
24963 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024964 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24965 {
24966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024967 "Unable to get send buffer in "
24968 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24969 pEventData, pwdiSetRcvPktFilterReqInfo,
24970 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024971 WDI_ASSERT(0);
24972 wpalMemoryFree(pRcvPktFilterCfg);
24973 return WDI_STATUS_E_FAILURE;
24974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024977 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 usSendSize,usRcvPktFilterCfgSize);
24979
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024980 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24981 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24982 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24983 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024984
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024986 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024987 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024989 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024990 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024992 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24993 {
24994 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24995 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24996 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24997 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24998 pRcvPktFilterCfg->paramsData[i].dataOffset =
24999 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25000 pRcvPktFilterCfg->paramsData[i].dataLength =
25001 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025003 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25005 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025006 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25008 8);
25009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025012 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25014
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25016 "Data Offset %d Data Len %d\n",
25017 pRcvPktFilterCfg->paramsData[i].dataOffset,
25018 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025019
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25021 "CData: %d:%d:%d:%d:%d:%d\n",
25022 pRcvPktFilterCfg->paramsData[i].compareData[0],
25023 pRcvPktFilterCfg->paramsData[i].compareData[1],
25024 pRcvPktFilterCfg->paramsData[i].compareData[2],
25025 pRcvPktFilterCfg->paramsData[i].compareData[3],
25026 pRcvPktFilterCfg->paramsData[i].compareData[4],
25027 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025028
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25030 "MData: %d:%d:%d:%d:%d:%d\n",
25031 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25032 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25033 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25034 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25035 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25036 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25037 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025039 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025040 pRcvPktFilterCfg,
25041 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025042
25043
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025044 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25045 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025048 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025049 wpalMemoryFree(pRcvPktFilterCfg);
25050 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025052 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025057}
25058
25059/**
25060 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025061
25062 @param pWDICtx: pointer to the WLAN DAL context
25063 pEventData: pointer to the event information structure
25064
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 @see
25066 @return Result of the function call
25067*/
25068WDI_Status
25069WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025070(
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 WDI_ControlBlockType* pWDICtx,
25072 WDI_EventInfoType* pEventData
25073)
25074{
25075 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25076 NULL;
25077 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25078 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025080 wpt_uint16 usDataOffset = 0;
25081 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025082 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25083 wpt_uint8 ucCurrentBSSSesIdx = 0;
25084 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025085
25086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025087 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025088
25089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 -------------------------------------------------------------------------*/
25092 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025093 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25097 {
25098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025102 }
25103
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025104 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25105 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25106 &pBSSSes);
25107 if ( NULL == pBSSSes )
25108 {
25109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025110 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025111 return WDI_STATUS_E_FAILURE;
25112 }
25113
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 /*-----------------------------------------------------------------------
25115 Get message buffer
25116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25118 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025119 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025120 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025121 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 {
25123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25124 "Unable to get send buffer in "
25125 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25126 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25127 wdiFilterMatchCountCb);
25128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 }
25131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025132 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25133 wpalMemoryCopy( pSendBuffer+usDataOffset,
25134 &rcvFltPktMatchCntReqParam,
25135 sizeof(rcvFltPktMatchCntReqParam));
25136
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 //
25138 // Don't need to fill send buffer other than header
25139 //
25140 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025141 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025142
25143
25144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025145 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025147 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25148 wdiFilterMatchCountCb,
25149 pEventData->pUserData,
25150 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025151}
25152
25153/**
25154 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025155
25156 @param pWDICtx: pointer to the WLAN DAL context
25157 pEventData: pointer to the event information structure
25158
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 @see
25160 @return Result of the function call
25161*/
25162WDI_Status
25163WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025164(
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 WDI_ControlBlockType* pWDICtx,
25166 WDI_EventInfoType* pEventData
25167)
Jeff Johnsone7245742012-09-05 17:12:55 -070025168{
Jeff Johnson295189b2012-06-20 16:38:30 -070025169 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25170 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 wpt_uint16 usDataOffset = 0;
25173 wpt_uint16 usSendSize = 0;
25174 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025175 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025176 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025177
25178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025179 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025180
25181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025183 -------------------------------------------------------------------------*/
25184 if (( NULL == pEventData ) ||
25185 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25186 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025187 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25189 {
25190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025193 return WDI_STATUS_E_FAILURE;
25194 }
25195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025196 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025197 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25198 &pBSSSes);
25199 if ( NULL == pBSSSes )
25200 {
25201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025202 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025204 }
25205
25206 /*-----------------------------------------------------------------------
25207 Get message buffer
25208 -----------------------------------------------------------------------*/
25209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 sizeof(tHalRcvFltPktClearParam),
25212 &pSendBuffer, &usDataOffset, &usSendSize))||
25213 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25214 {
25215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25216 "Unable to get send buffer in "
25217 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25218 pEventData, pwdiRcvFltPktClearReqParamsType,
25219 wdiRcvFltPktClearFilterCb);
25220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 }
25223
25224
25225 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025226 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025229
Jeff Johnsone7245742012-09-05 17:12:55 -070025230 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25231 wpalMemoryCopy( pSendBuffer+usDataOffset,
25232 &rcvFltPktClearParam,
25233 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025234
25235 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025237
25238
25239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025243 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025244 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025245}
25246
25247/**
25248 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025249
25250 @param pWDICtx: pointer to the WLAN DAL context
25251 pEventData: pointer to the event information structure
25252
Jeff Johnson295189b2012-06-20 16:38:30 -070025253 @see
25254 @return Result of the function call
25255*/
25256WDI_Status
25257WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025258(
Jeff Johnson295189b2012-06-20 16:38:30 -070025259 WDI_ControlBlockType* pWDICtx,
25260 WDI_EventInfoType* pEventData
25261)
25262{
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 eHalStatus halStatus;
25264 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025265 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25266 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25268
25269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025270 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025271
25272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 -------------------------------------------------------------------------*/
25275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25276 ( NULL == pEventData->pEventData ))
25277 {
25278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025282 }
25283
Jeff Johnsone7245742012-09-05 17:12:55 -070025284 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025285
25286 /*-------------------------------------------------------------------------
25287 Extract response and send it to UMAC
25288 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025289 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25290 {
25291 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25292 pEventData->pEventData,
25293 sizeof(halRcvFltPktSetMcListRsp));
25294
25295 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25296 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25297 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25298 halRcvFltPktSetMcListRsp.bssIdx;
25299 }
25300 else
25301 {
25302 halStatus = *((eHalStatus*)pEventData->pEventData);
25303 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25304 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025305
25306 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025307 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025308
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310}
25311
25312/**
25313 @brief Process Set Rsp function (called when a
25314 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025315
25316 @param pWDICtx: pointer to the WLAN DAL context
25317 pEventData: pointer to the event information structure
25318
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 @see
25320 @return Result of the function call
25321*/
25322WDI_Status
25323WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025324(
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 WDI_ControlBlockType* pWDICtx,
25326 WDI_EventInfoType* pEventData
25327)
25328{
Jeff Johnson295189b2012-06-20 16:38:30 -070025329 eHalStatus halStatus;
25330 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025331 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25332 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25334
25335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025336 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025337
25338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 -------------------------------------------------------------------------*/
25341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25342 ( NULL == pEventData->pEventData ))
25343 {
25344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 }
25349
25350 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025351 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025352
25353 /*-------------------------------------------------------------------------
25354 Extract response and send it to UMAC
25355 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025356 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25357 {
25358 wpalMemoryCopy( &halSetPktFilterRspParams,
25359 pEventData->pEventData,
25360 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025361
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025362 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25363 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25364 }
25365 else
25366 {
25367 halStatus = *((eHalStatus*)pEventData->pEventData);
25368 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25369 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025371 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025372
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025374}
25375
25376/**
25377 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025378
25379 @param pWDICtx: pointer to the WLAN DAL context
25380 pEventData: pointer to the event information structure
25381
Jeff Johnson295189b2012-06-20 16:38:30 -070025382 @see
25383 @return Result of the function call
25384*/
25385WDI_Status
25386WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025387(
Jeff Johnson295189b2012-06-20 16:38:30 -070025388 WDI_ControlBlockType* pWDICtx,
25389 WDI_EventInfoType* pEventData
25390)
25391{
Jeff Johnson295189b2012-06-20 16:38:30 -070025392 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025394 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25395 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025396
25397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25398
25399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025400 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025401
25402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025404 -------------------------------------------------------------------------*/
25405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25406 ( NULL == pEventData->pEventData ))
25407 {
25408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025412 }
25413
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025415
25416 /*-------------------------------------------------------------------------
25417 Extract response and send it to UMAC
25418 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025419 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25420 {
25421 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25422 pEventData->pEventData,
25423 sizeof(halRcvFltrPktMatachRsp));
25424
25425 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25426 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25427 }
25428 else
25429 {
25430 halStatus = *((eHalStatus*)pEventData->pEventData);
25431 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25432 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025433
25434 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025435 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025436
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025438}
25439
25440/**
25441 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025442
25443 @param pWDICtx: pointer to the WLAN DAL context
25444 pEventData: pointer to the event information structure
25445
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 @see
25447 @return Result of the function call
25448*/
25449WDI_Status
25450WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025451(
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 WDI_ControlBlockType* pWDICtx,
25453 WDI_EventInfoType* pEventData
25454)
25455{
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 eHalStatus halStatus;
25457 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025458 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25459 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25461
25462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025463 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025464
25465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 -------------------------------------------------------------------------*/
25468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25469 ( NULL == pEventData->pEventData ))
25470 {
25471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 }
25476
25477 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479
25480 /*-------------------------------------------------------------------------
25481 Extract response and send it to UMAC
25482 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025483 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25484 {
25485 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25486 pEventData->pEventData,
25487 sizeof(halRcvFltPktClearRspMsg));
25488
25489 wdiRcvFltPktClearRspParamsType.wdiStatus =
25490 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25491 wdiRcvFltPktClearRspParamsType.bssIdx =
25492 halRcvFltPktClearRspMsg.bssIdx;
25493 }
25494 else
25495 {
25496 halStatus = *((eHalStatus*)pEventData->pEventData);
25497 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025499
25500 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025501 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025502
Jeff Johnsone7245742012-09-05 17:12:55 -070025503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025504}
25505#endif // WLAN_FEATURE_PACKET_FILTERING
25506
25507/**
25508 @brief Process Shutdown Rsp function
25509 There is no shutdown response comming from HAL
25510 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025511
Jeff Johnson295189b2012-06-20 16:38:30 -070025512 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025514
25515 @see
25516 @return Result of the function call
25517*/
25518WDI_Status
25519WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025520(
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 WDI_ControlBlockType* pWDICtx,
25522 WDI_EventInfoType* pEventData
25523)
25524{
25525 /*There is no shutdown response comming from HAL - function just kept for
25526 simmetry */
25527 WDI_ASSERT(0);
25528 return WDI_STATUS_SUCCESS;
25529}/*WDI_ProcessShutdownRsp*/
25530
25531/**
25532 @brief WDI_SetPowerParamsReq
25533
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025536
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 wdiPowerParamsCb: callback for passing back the response
25538 of the Set Power Params operation received from the
25539 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025540
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 callback
25543
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 @return Result of the function call
25545*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025547WDI_SetPowerParamsReq
25548(
25549 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25550 WDI_SetPowerParamsCb wdiPowerParamsCb,
25551 void* pUserData
25552)
25553{
25554 WDI_EventInfoType wdiEventData;
25555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25556
25557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 ------------------------------------------------------------------------*/
25560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25561 {
25562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25563 "WDI API call before module is initialized - Fail request");
25564
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 }
25567
25568 /*------------------------------------------------------------------------
25569 Fill in Event data and post to the Main FSM
25570 ------------------------------------------------------------------------*/
25571 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025574 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 wdiEventData.pUserData = pUserData;
25576
25577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25578}/*WDI_SetPowerParamsReq*/
25579
25580/**
25581 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025582
25583 @param pWDICtx: pointer to the WLAN DAL context
25584 pEventData: pointer to the event information structure
25585
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 @see
25587 @return Result of the function call
25588*/
25589WDI_Status
25590WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025591(
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 WDI_ControlBlockType* pWDICtx,
25593 WDI_EventInfoType* pEventData
25594)
25595{
25596 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25597 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 wpt_uint16 usDataOffset = 0;
25600 wpt_uint16 usSendSize = 0;
25601 tSetPowerParamsType powerParams;
25602
25603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025605 -------------------------------------------------------------------------*/
25606 if (( NULL == pEventData ) ||
25607 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25608 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25609 {
25610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025614 }
25615
25616 /*-----------------------------------------------------------------------
25617 Get message buffer
25618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025620 sizeof(powerParams),
25621 &pSendBuffer, &usDataOffset, &usSendSize))||
25622 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25623 {
25624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25625 "Unable to get send buffer in Set PNO req %x %x %x",
25626 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 }
25630
25631 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25634
25635 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25638
25639 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025640 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25642
25643 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25646
25647 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25650
25651 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 powerParams.uBETInterval =
25653 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025654
Jeff Johnsone7245742012-09-05 17:12:55 -070025655
25656 wpalMemoryCopy( pSendBuffer+usDataOffset,
25657 &powerParams,
25658 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025659
25660 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025662
25663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25667 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025668}
25669
25670/**
25671 @brief Process Power Params Rsp function (called when a
25672 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025673
25674 @param pWDICtx: pointer to the WLAN DAL context
25675 pEventData: pointer to the event information structure
25676
Jeff Johnson295189b2012-06-20 16:38:30 -070025677 @see
25678 @return Result of the function call
25679*/
25680WDI_Status
25681WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025682(
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 WDI_ControlBlockType* pWDICtx,
25684 WDI_EventInfoType* pEventData
25685)
25686{
25687 WDI_Status wdiStatus;
25688 eHalStatus halStatus;
25689 WDI_SetPowerParamsCb wdiPowerParamsCb;
25690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25691
25692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 -------------------------------------------------------------------------*/
25695 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25696 ( NULL == pEventData->pEventData ))
25697 {
25698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 }
25703
Jeff Johnsone7245742012-09-05 17:12:55 -070025704 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705
25706 /*-------------------------------------------------------------------------
25707 Extract response and send it to UMAC
25708 -------------------------------------------------------------------------*/
25709 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025710 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025711
25712 /*Notify UMAC*/
25713 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25714
Jeff Johnsone7245742012-09-05 17:12:55 -070025715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025716}/*WDI_ProcessSetPowerParamsRsp*/
25717
25718#ifdef WLAN_FEATURE_GTK_OFFLOAD
25719/**
25720 @brief WDI_GTKOffloadReq will be called when the upper MAC
25721 wants to set GTK Rekey Counter while in power save. Upon
25722 the call of this API the WLAN DAL will pack and send a
25723 HAL GTK offload request message to the lower RIVA
25724 sub-system if DAL is in state STARTED.
25725
25726 In state BUSY this request will be queued. Request won't
25727 be allowed in any other state.
25728
25729 WDI_PostAssocReq must have been called.
25730
25731 @param pwdiGtkOffloadParams: the GTK offload as specified
25732 by the Device Interface
25733
25734 wdiGtkOffloadCb: callback for passing back the response
25735 of the GTK offload operation received from the device
25736
25737 pUserData: user data will be passed back with the
25738 callback
25739
25740 @see WDI_PostAssocReq
25741 @return Result of the function call
25742*/
25743WDI_Status
25744WDI_GTKOffloadReq
25745(
25746 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25747 WDI_GtkOffloadCb wdiGtkOffloadCb,
25748 void* pUserData
25749)
25750{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025751 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25753
25754 /*------------------------------------------------------------------------
25755 Sanity Check
25756 ------------------------------------------------------------------------*/
25757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25758 {
25759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25760 "WDI API call before module is initialized - Fail request");
25761
25762 return WDI_STATUS_E_NOT_ALLOWED;
25763 }
25764
25765 /*------------------------------------------------------------------------
25766 Fill in Event data and post to the Main FSM
25767 ------------------------------------------------------------------------*/
25768 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25769 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025770 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025771 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25772 wdiEventData.pUserData = pUserData;
25773
25774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25775}
25776
25777
25778/**
25779 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25780 MAC wants to get GTK Rekey Counter while in power save.
25781 Upon the call of this API the WLAN DAL will pack and
25782 send a HAL GTK offload request message to the lower RIVA
25783 sub-system if DAL is in state STARTED.
25784
25785 In state BUSY this request will be queued. Request won't
25786 be allowed in any other state.
25787
25788 WDI_PostAssocReq must have been called.
25789
25790 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25791 Information Message as specified by the
25792 Device Interface
25793
25794 wdiGtkOffloadGetInfoCb: callback for passing back the
25795 response of the GTK offload operation received from the
25796 device
25797
25798 pUserData: user data will be passed back with the
25799 callback
25800
25801 @see WDI_PostAssocReq
25802 @return Result of the function call
25803*/
25804WDI_Status
25805WDI_GTKOffloadGetInfoReq
25806(
25807 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25808 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25809 void* pUserData
25810)
25811{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025812 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25814
25815 /*------------------------------------------------------------------------
25816 Sanity Check
25817 ------------------------------------------------------------------------*/
25818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25819 {
25820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25821 "WDI API call before module is initialized - Fail request");
25822
25823 return WDI_STATUS_E_NOT_ALLOWED;
25824 }
25825
25826 /*------------------------------------------------------------------------
25827 Fill in Event data and post to the Main FSM
25828 ------------------------------------------------------------------------*/
25829 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25830 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25831 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25832 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25833 wdiEventData.pUserData = pUserData;
25834
25835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25836}
25837
25838
25839/**
25840 @brief Process set GTK Offload Request function
25841
25842 @param pWDICtx: pointer to the WLAN DAL context
25843 pEventData: pointer to the event information structure
25844
25845 @see
25846 @return Result of the function call
25847*/
25848WDI_Status
25849WDI_ProcessGTKOffloadReq
25850(
25851 WDI_ControlBlockType* pWDICtx,
25852 WDI_EventInfoType* pEventData
25853)
25854{
25855 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25856 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25857 wpt_uint8* pSendBuffer = NULL;
25858 wpt_uint16 usDataOffset = 0;
25859 wpt_uint16 usSendSize = 0;
25860 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025861 wpt_uint8 ucCurrentSessionId = 0;
25862 WDI_BSSSessionType* pBSSSes = NULL;
25863
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25865
25866 /*-------------------------------------------------------------------------
25867 Sanity check
25868 -------------------------------------------------------------------------*/
25869 if (( NULL == pEventData ) ||
25870 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25871 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25872 {
25873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025876 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 }
25878
25879 /*-----------------------------------------------------------------------
25880 Get message buffer
25881 -----------------------------------------------------------------------*/
25882 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25883 sizeof(gtkOffloadReqParams),
25884 &pSendBuffer, &usDataOffset, &usSendSize))||
25885 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25886 {
25887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25888 "Unable to get send buffer in GTK offload req %x %x %x",
25889 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25890 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025891 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025892 }
25893
25894 //
25895 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25896 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025897 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25898 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25899 &pBSSSes);
25900 if ( NULL == pBSSSes )
25901 {
25902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025903 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025904 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025905 }
25906
25907 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25908
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25910 // Copy KCK
25911 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25912 // Copy KEK
25913 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25914 // Copy KeyReplayCounter
25915 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25916
25917 wpalMemoryCopy( pSendBuffer+usDataOffset,
25918 &gtkOffloadReqParams,
25919 sizeof(gtkOffloadReqParams));
25920
25921 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25922 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25923
25924 /*-------------------------------------------------------------------------
25925 Send Get STA Request to HAL
25926 -------------------------------------------------------------------------*/
25927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25928 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025929
25930fail:
25931 // Release the message buffer so we don't leak
25932 wpalMemoryFree(pSendBuffer);
25933
25934failRequest:
25935 //WDA should have failure check to avoid the memory leak
25936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025937}
25938
25939
25940/**
25941 @brief Process GTK Offload Get Information Request function
25942
25943 @param pWDICtx: pointer to the WLAN DAL context
25944 pEventData: pointer to the event information structure
25945
25946 @see
25947 @return Result of the function call
25948*/
25949WDI_Status
25950WDI_ProcessGTKOffloadGetInfoReq
25951(
25952 WDI_ControlBlockType* pWDICtx,
25953 WDI_EventInfoType* pEventData
25954)
25955{
25956 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25957 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25958 wpt_uint8* pSendBuffer = NULL;
25959 wpt_uint16 usDataOffset = 0;
25960 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025961 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25962 wpt_uint8 ucCurrentSessionId = 0;
25963 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025964
25965 /*-------------------------------------------------------------------------
25966 Sanity check
25967 -------------------------------------------------------------------------*/
25968 if (( NULL == pEventData ) ||
25969 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25970 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25971 {
25972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025975 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 }
25977
25978 /*-----------------------------------------------------------------------
25979 Get message buffer
25980 -----------------------------------------------------------------------*/
25981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025982 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053025984 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 {
25986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25987 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25988 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25989 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025990 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025992 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25993 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25994 &pBSSSes);
25995 if ( NULL == pBSSSes )
25996 {
25997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025998 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025999 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026000 }
26001 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026002
26003 //
26004 // Don't need to fill send buffer other than header
26005 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026006 wpalMemoryCopy( pSendBuffer+usDataOffset,
26007 &halGtkOffloadGetInfoReqParams,
26008 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026009
26010 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26011 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26012
26013 /*-------------------------------------------------------------------------
26014 Send Get STA Request to HAL
26015 -------------------------------------------------------------------------*/
26016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26017 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026018fail:
26019 // Release the message buffer so we don't leak
26020 wpalMemoryFree(pSendBuffer);
26021
26022failRequest:
26023 //WDA should have failure check to avoid the memory leak
26024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026025}
26026
26027/**
26028 @brief Process host offload Rsp function (called when a
26029 response is being received over the bus from HAL)
26030
26031 @param pWDICtx: pointer to the WLAN DAL context
26032 pEventData: pointer to the event information structure
26033
26034 @see
26035 @return Result of the function call
26036*/
26037WDI_Status
26038WDI_ProcessGtkOffloadRsp
26039(
26040 WDI_ControlBlockType* pWDICtx,
26041 WDI_EventInfoType* pEventData
26042)
26043{
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 eHalStatus halStatus;
26045 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026046 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26047 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26049
26050 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26051
26052 /*-------------------------------------------------------------------------
26053 Sanity check
26054 -------------------------------------------------------------------------*/
26055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26056 ( NULL == pEventData->pEventData))
26057 {
26058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 WDI_ASSERT(0);
26061 return WDI_STATUS_E_FAILURE;
26062 }
26063
26064 /*-------------------------------------------------------------------------
26065 Extract response and send it to UMAC
26066 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026067 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26068 {
26069 wpalMemoryCopy( &halGtkOffloadRspParams,
26070 pEventData->pEventData,
26071 sizeof(halGtkOffloadRspParams));
26072
26073 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026074 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026075 wdiGtkOffloadRsparams.bssIdx =
26076 halGtkOffloadRspParams.bssIdx;
26077 }
26078 else
26079 {
26080 halStatus = *((eHalStatus*)pEventData->pEventData);
26081 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26082 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026083
26084 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026085 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026086
26087 return WDI_STATUS_SUCCESS;
26088}
26089
26090/**
26091 @brief Process GTK Offload Get Information Response function
26092
26093 @param pWDICtx: pointer to the WLAN DAL context
26094 pEventData: pointer to the event information structure
26095
26096 @see
26097 @return Result of the function call
26098*/
26099WDI_Status
26100WDI_ProcessGTKOffloadGetInfoRsp
26101(
26102 WDI_ControlBlockType* pWDICtx,
26103 WDI_EventInfoType* pEventData
26104)
26105{
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026108 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26109 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026111
26112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26113
26114 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26115
26116 /*-------------------------------------------------------------------------
26117 Sanity check
26118 -------------------------------------------------------------------------*/
26119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26120 ( NULL == pEventData->pEventData ))
26121 {
26122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 WDI_ASSERT(0);
26125 return WDI_STATUS_E_FAILURE;
26126 }
26127
26128 /*-------------------------------------------------------------------------
26129 Extract response and send it to UMAC
26130 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026131 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26132 {
26133 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26134 pEventData->pEventData,
26135 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026136
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026137 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026138 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026139 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26140 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26141 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26142 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26143 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26144 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26145 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26146 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026147
26148 wpalMutexAcquire(&pWDICtx->wptMutex);
26149 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26150 &pBSSSes);
26151
26152 if ( NULL == pBSSSes )
26153 {
26154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26155 "Association sequence for this BSS does not exist or "
26156 "association no longer in progress - mysterious HAL response");
26157 wpalMutexRelease(&pWDICtx->wptMutex);
26158 return WDI_STATUS_E_NOT_ALLOWED;
26159 }
26160
26161 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26162 sizeof (wpt_macAddr));
26163 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026164 }
26165 else
26166 {
26167 halStatus = *((eHalStatus*)pEventData->pEventData);
26168 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 /*Notify UMAC*/
26171 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26172 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026173 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026174
26175 return WDI_STATUS_SUCCESS;
26176}
26177#endif // WLAN_FEATURE_GTK_OFFLOAD
26178
26179#ifdef WLAN_WAKEUP_EVENTS
26180WDI_Status
26181WDI_ProcessWakeReasonInd
26182(
26183 WDI_ControlBlockType* pWDICtx,
26184 WDI_EventInfoType* pEventData
26185)
26186{
26187 WDI_LowLevelIndType *pWdiInd;
26188 tpWakeReasonParams pWakeReasonParams;
26189 wpt_uint32 allocSize = 0;
26190
26191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026192 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026193
26194 /*-------------------------------------------------------------------------
26195 Sanity check
26196 -------------------------------------------------------------------------*/
26197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26198 ( NULL == pEventData->pEventData ))
26199 {
26200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 WDI_ASSERT( 0 );
26203 return WDI_STATUS_E_FAILURE;
26204 }
26205
26206 /*-------------------------------------------------------------------------
26207 Extract indication and send it to UMAC
26208 -------------------------------------------------------------------------*/
26209 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26210
26211 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26212
26213 //Allocate memory for WDI_WakeReasonIndType structure
26214 pWdiInd = wpalMemoryAllocate(allocSize) ;
26215
26216 if(NULL == pWdiInd)
26217 {
26218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26219 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026220 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 WDI_ASSERT(0);
26222 return WDI_STATUS_E_FAILURE;
26223 }
26224
26225 wpalMemoryZero(pWdiInd, allocSize);
26226
26227 /* Fill in the indication parameters*/
26228 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26229 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26230 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26231 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26232 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26233 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26234 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26235 &(pWakeReasonParams->aDataStart[0]),
26236 pWakeReasonParams->ulStoredDataLen);
26237
ltimariu034f7d62013-01-24 18:54:33 -080026238
26239 if ( pWDICtx->wdiLowLevelIndCB )
26240 {
26241 /*Notify UMAC*/
26242 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26243 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026244
26245 //Free memory allocated for WDI_WakeReasonIndType structure
26246 wpalMemoryFree(pWdiInd);
26247
26248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026249 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026250
26251 return WDI_STATUS_SUCCESS;
26252}
26253#endif // WLAN_WAKEUP_EVENTS
26254
26255void WDI_GetWcnssCompiledApiVersion
26256(
26257 WDI_WlanVersionType *pWcnssApiVersion
26258)
26259{
26260 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26261 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26262 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26263 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26264}
26265
26266/**
26267 @brief Process Set TM Level Rsp function (called when a
26268 response is being received over the bus from HAL)
26269
26270 @param pWDICtx: pointer to the WLAN DAL context
26271 pEventData: pointer to the event information structure
26272
26273 @see
26274 @return Result of the function call
26275*/
26276WDI_Status
26277WDI_ProcessSetTmLevelRsp
26278(
26279 WDI_ControlBlockType* pWDICtx,
26280 WDI_EventInfoType* pEventData
26281)
26282{
26283 WDI_Status wdiStatus;
26284 eHalStatus halStatus;
26285 WDI_SetTmLevelCb wdiSetTmLevelCb;
26286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26287
26288 /*-------------------------------------------------------------------------
26289 Sanity check
26290 -------------------------------------------------------------------------*/
26291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26292 ( NULL == pEventData->pEventData ))
26293 {
26294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 WDI_ASSERT(0);
26297 return WDI_STATUS_E_FAILURE;
26298 }
26299
26300 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26301
26302 /*-------------------------------------------------------------------------
26303 Extract response and send it to UMAC
26304 -------------------------------------------------------------------------*/
26305 halStatus = *((eHalStatus*)pEventData->pEventData);
26306 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26307
26308 /*Notify UMAC*/
26309 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26310
26311 return WDI_STATUS_SUCCESS;
26312}/*WDI_ProcessSetTmLevelRsp*/
26313
26314/**
26315 @brief Process Set Thermal Mitigation level Changed request
26316
26317 @param pWDICtx: pointer to the WLAN DAL context
26318 pEventData: pointer to the event information structure
26319
26320 @see
26321 @return Result of the function call
26322*/
26323WDI_Status
26324WDI_ProcessSetTmLevelReq
26325(
26326 WDI_ControlBlockType* pWDICtx,
26327 WDI_EventInfoType* pEventData
26328)
26329{
26330 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26331 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26332 wpt_uint8* pSendBuffer = NULL;
26333 wpt_uint16 usDataOffset = 0;
26334 wpt_uint16 usSendSize = 0;
26335 tSetThermalMitgationType halTmMsg;
26336
26337 /*-------------------------------------------------------------------------
26338 Sanity check
26339 -------------------------------------------------------------------------*/
26340 if (( NULL == pEventData ) ||
26341 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26342 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26343 {
26344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 WDI_ASSERT(0);
26347 return WDI_STATUS_E_FAILURE;
26348 }
26349
26350 /*-----------------------------------------------------------------------
26351 Get message buffer
26352 -----------------------------------------------------------------------*/
26353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26354 sizeof(halTmMsg),
26355 &pSendBuffer, &usDataOffset, &usSendSize))||
26356 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26357 {
26358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26359 "Unable to get send buffer in Set PNO req %x %x %x",
26360 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26361 WDI_ASSERT(0);
26362 return WDI_STATUS_E_FAILURE;
26363 }
26364
26365 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26366 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26367
26368 wpalMemoryCopy( pSendBuffer+usDataOffset,
26369 &halTmMsg,
26370 sizeof(halTmMsg));
26371
26372 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26373 pWDICtx->pfncRspCB = NULL;
26374 /*-------------------------------------------------------------------------
26375 Send Get STA Request to HAL
26376 -------------------------------------------------------------------------*/
26377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26378 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26379}
26380
26381/* Fill the value from the global features enabled array to the global capabilities
26382 * bitmap struct
26383 */
26384static void
26385FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26386{
26387 wpt_int8 i;
26388 for (i=0; i<len; i++)
26389 {
26390 setFeatCaps(fCaps, enabledFeat[i]);
26391 }
26392}
26393
26394/**
26395 @brief WDI_featureCapsExchangeReq
26396 Post feature capability bitmap exchange event.
26397 Host will send its own capability to FW in this req and
26398 expect FW to send its capability back as a bitmap in Response
26399
26400 @param
26401
26402 wdiFeatureCapsExchangeCb: callback called on getting the response.
26403 It is kept to mantain similarity between WDI reqs and if needed, can
26404 be used in future. Currently, It is set to NULL
26405
26406 pUserData: user data will be passed back with the
26407 callback
26408
26409 @see
26410 @return Result of the function call
26411*/
26412WDI_Status
26413WDI_featureCapsExchangeReq
26414(
26415 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26416 void* pUserData
26417)
26418{
26419 WDI_EventInfoType wdiEventData;
26420 wpt_int32 fCapsStructSize;
26421
26422 /*------------------------------------------------------------------------
26423 Sanity Check
26424 ------------------------------------------------------------------------*/
26425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26426 {
26427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26428 "WDI API call before module is initialized - Fail request");
26429
26430 return WDI_STATUS_E_NOT_ALLOWED;
26431 }
26432
26433 /* Allocate memory separately for global variable carrying FW caps */
26434 fCapsStructSize = sizeof(tWlanFeatCaps);
26435 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26436 if ( NULL == gpHostWlanFeatCaps )
26437 {
26438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26439 "Cannot allocate memory for host capability info\n");
26440 WDI_ASSERT(0);
26441 return WDI_STATUS_MEM_FAILURE;
26442 }
26443
26444 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26445
26446 /*------------------------------------------------------------------------
26447 Fill in Event data and post to the Main FSM
26448 ------------------------------------------------------------------------*/
26449 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26450 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26452 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 gpHostWlanFeatCaps->featCaps[0],
26454 gpHostWlanFeatCaps->featCaps[1],
26455 gpHostWlanFeatCaps->featCaps[2],
26456 gpHostWlanFeatCaps->featCaps[3]
26457 );
26458
26459 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26460 wdiEventData.pEventData = gpHostWlanFeatCaps;
26461 wdiEventData.uEventDataSize = fCapsStructSize;
26462 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26463 wdiEventData.pUserData = pUserData;
26464
26465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26466}
26467
26468/**
Yathishd8713192012-12-10 14:21:35 -080026469 @brief Disable Active mode offload in Host
26470
26471 @param void
26472 @see
26473 @return void
26474*/
26475void
26476WDI_disableCapablityFeature(wpt_uint8 feature_index)
26477{
26478 supportEnabledFeatures[feature_index] = 0;
26479 return;
26480}
26481
26482/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 @brief Process Host-FW Capability Exchange Request function
26484
26485 @param pWDICtx: pointer to the WLAN DAL context
26486 pEventData: pointer to the event information structure
26487
26488 @see
26489 @return Result of the function call
26490*/
26491WDI_Status
26492WDI_ProcessFeatureCapsExchangeReq
26493(
26494 WDI_ControlBlockType* pWDICtx,
26495 WDI_EventInfoType* pEventData
26496)
26497{
26498 wpt_uint8* pSendBuffer = NULL;
26499 wpt_uint16 usDataOffset = 0;
26500 wpt_uint16 usSendSize = 0;
26501 wpt_uint16 usLen = 0;
26502
26503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26504
26505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026506 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026507
26508 /*-------------------------------------------------------------------------
26509 Sanity check
26510 -------------------------------------------------------------------------*/
26511 /* Call back function is NULL since not required for cap exchange req */
26512 if (( NULL == pEventData ) ||
26513 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26514 {
26515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 WDI_ASSERT(0);
26518 return WDI_STATUS_E_FAILURE;
26519 }
26520
26521 /*-----------------------------------------------------------------------
26522 Get message buffer
26523 -----------------------------------------------------------------------*/
26524 usLen = sizeof(tWlanFeatCaps);
26525
26526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26527 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26528 usLen,
26529 &pSendBuffer, &usDataOffset, &usSendSize))||
26530 ( usSendSize < (usDataOffset + usLen )))
26531 {
26532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26533 "Unable to get send buffer in feat caps exchange req %x %x",
26534 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26535 WDI_ASSERT(0);
26536 return WDI_STATUS_E_FAILURE;
26537 }
26538
26539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026540 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26542 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26543 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26544 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26545 );
26546
26547 /* Copy host caps after the offset in the send buffer */
26548 wpalMemoryCopy( pSendBuffer+usDataOffset,
26549 (tWlanFeatCaps *)pEventData->pEventData,
26550 usLen);
26551
26552 /*-------------------------------------------------------------------------
26553 Send Start Request to HAL
26554 -------------------------------------------------------------------------*/
26555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26556 (WDI_StartRspCb)pEventData->pCBfnc,
26557 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26558
26559}/*WDI_ProcessFeatureCapsExchangeReq*/
26560
26561/**
26562 @brief Process Host-FW Capability Exchange Response function
26563
26564 @param pWDICtx: pointer to the WLAN DAL context
26565 pEventData: pointer to the event information structure
26566
26567 @see
26568 @return Result of the function call
26569*/
26570WDI_Status
26571WDI_ProcessFeatureCapsExchangeRsp
26572(
26573 WDI_ControlBlockType* pWDICtx,
26574 WDI_EventInfoType* pEventData
26575)
26576{
26577 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26578 wpt_int32 fCapsStructSize;
26579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26580
26581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026582 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
26584 /*-------------------------------------------------------------------------
26585 Sanity check
26586 -------------------------------------------------------------------------*/
26587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26588 ( NULL == pEventData->pEventData ))
26589 {
26590 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026593 WDI_ASSERT(0);
26594 return WDI_STATUS_E_FAILURE;
26595 }
26596
26597 /* Allocate memory separately for global variable carrying FW caps */
26598 fCapsStructSize = sizeof(tWlanFeatCaps);
26599 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26600 if ( NULL == gpFwWlanFeatCaps )
26601 {
26602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26603 "Cannot allocate memory for host capability info\n");
26604 WDI_ASSERT(0);
26605 return WDI_STATUS_MEM_FAILURE;
26606 }
26607
26608 /*-------------------------------------------------------------------------
26609 Unpack HAL Response Message - the header was already extracted by the
26610 main Response Handling procedure
26611 -------------------------------------------------------------------------*/
26612 /*-------------------------------------------------------------------------
26613 Extract response and send it to UMAC
26614 -------------------------------------------------------------------------*/
26615
26616 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26617 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26619 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026620 gpFwWlanFeatCaps->featCaps[0],
26621 gpFwWlanFeatCaps->featCaps[1],
26622 gpFwWlanFeatCaps->featCaps[2],
26623 gpFwWlanFeatCaps->featCaps[3]
26624 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026625 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26626
26627 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26628 if (wdiFeatureCapsExchangeCb != NULL)
26629 wdiFeatureCapsExchangeCb(NULL, NULL);
26630
26631 return WDI_STATUS_SUCCESS;
26632}
26633
Mohit Khanna4a70d262012-09-11 16:30:12 -070026634#ifdef WLAN_FEATURE_11AC
26635WDI_Status
26636WDI_ProcessUpdateVHTOpModeRsp
26637(
26638 WDI_ControlBlockType* pWDICtx,
26639 WDI_EventInfoType* pEventData
26640)
26641{
26642 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26643 WDI_Status wdiStatus;
26644 eHalStatus halStatus;
26645
26646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26647
26648 /*-------------------------------------------------------------------------
26649 Sanity check
26650 -------------------------------------------------------------------------*/
26651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26652 ( NULL == pEventData->pEventData))
26653 {
26654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026655 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026656 WDI_ASSERT(0);
26657 return WDI_STATUS_E_FAILURE;
26658 }
26659 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26660
26661 /*-------------------------------------------------------------------------
26662 Extract response and send it to UMAC
26663 -------------------------------------------------------------------------*/
26664 halStatus = *((eHalStatus*)pEventData->pEventData);
26665 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26666
26667 /*Notify UMAC*/
26668 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26669
26670 return WDI_STATUS_SUCCESS;
26671}
26672#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026673/**
26674 @brief WDI_getHostWlanFeatCaps
26675 WDI API that returns whether the feature passed to it as enum value in
26676 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26677 variable storing host capability bitmap to find this. This can be used by
26678 other moduels to decide certain things like call different APIs based on
26679 whether a particular feature is supported.
26680
26681 @param
26682
26683 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26684
26685 @see
26686 @return
26687 0 - if the feature is NOT supported in host
26688 any non-zero value - if the feature is SUPPORTED in host.
26689*/
26690wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26691{
26692 wpt_uint8 featSupported = 0;
26693 if (gpHostWlanFeatCaps != NULL)
26694 {
26695 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26696 }
26697 else
26698 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026700 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 }
26702 return featSupported;
26703}
26704
26705/**
26706 @brief WDI_getFwWlanFeatCaps
26707 WDI API that returns whether the feature passed to it as enum value in
26708 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26709 variable storing host capability bitmap to find this. This can be used by
26710 other moduels to decide certain things like call different APIs based on
26711 whether a particular feature is supported.
26712
26713 @param
26714
26715 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26716 in wlan_hal_msg.h.
26717
26718 @see
26719 @return
26720 0 - if the feature is NOT supported in FW
26721 any non-zero value - if the feature is SUPPORTED in FW.
26722*/
26723wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26724{
26725 wpt_uint8 featSupported = 0;
26726 if (gpFwWlanFeatCaps != NULL)
26727 {
26728 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26729 }
26730 else
26731 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026733 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026734 }
26735 return featSupported;
26736}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026737
26738#ifdef WLAN_FEATURE_11AC
26739WDI_Status
26740WDI_ProcessUpdateVHTOpModeReq
26741(
26742 WDI_ControlBlockType* pWDICtx,
26743 WDI_EventInfoType* pEventData
26744)
26745{
26746 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26747 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26748 wpt_uint8* pSendBuffer = NULL;
26749 wpt_uint16 usDataOffset = 0;
26750 wpt_uint16 usSendSize = 0;
26751
26752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26753
26754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026755 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026756
26757 /*-------------------------------------------------------------------------
26758 Sanity check
26759 -------------------------------------------------------------------------*/
26760 if (( NULL == pEventData ) ||
26761 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26762 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26763 {
26764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026765 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026766 WDI_ASSERT(0);
26767 return WDI_STATUS_E_FAILURE;
26768 }
26769
26770 /*-----------------------------------------------------------------------
26771 Get message buffer
26772 -----------------------------------------------------------------------*/
26773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26774 sizeof(WDI_UpdateVHTOpMode),
26775 &pSendBuffer, &usDataOffset, &usSendSize))||
26776 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26777 {
26778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26779 "Unable to get send buffer in update vht opMode req");
26780 WDI_ASSERT(0);
26781 return WDI_STATUS_E_FAILURE;
26782 }
26783
26784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26785 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26786
26787 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26788 sizeof(WDI_UpdateVHTOpMode));
26789
26790 /*-------------------------------------------------------------------------
26791 Send Start Request to HAL
26792 -------------------------------------------------------------------------*/
26793 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26794 wdiVHTOpModeCb,
26795 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26796
26797}
26798
26799WDI_Status
26800WDI_UpdateVHTOpModeReq
26801(
26802 WDI_UpdateVHTOpMode *pData,
26803 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26804 void* pUserData
26805)
26806{
26807 WDI_EventInfoType wdiEventData;
26808
26809 /*------------------------------------------------------------------------
26810 Sanity Check
26811 ------------------------------------------------------------------------*/
26812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26813 {
26814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26815 "WDI API call before module is initialized - Fail request");
26816
26817 return WDI_STATUS_E_NOT_ALLOWED;
26818 }
26819
26820 /*------------------------------------------------------------------------
26821 Fill in Event data and post to the Main FSM
26822 ------------------------------------------------------------------------*/
26823 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26824 wdiEventData.pEventData = pData;
26825 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26826 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26827 wdiEventData.pUserData = pUserData;
26828
26829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26830 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26831
26832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26833
26834}
26835#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026836
26837/**
26838 @brief WDI_TransportChannelDebug -
26839 Display DXE Channel debugging information
26840 User may request to display DXE channel snapshot
26841 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026842
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026843 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026844 @param enableStallDetect : Enable stall detect feature
26845 This feature will take effect to data performance
26846 Not integrate till fully verification
26847 @see
26848 @return none
26849*/
26850void WDI_TransportChannelDebug
26851(
26852 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026853 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026854)
26855{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026856 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026857 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026858}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026859/**
26860 @brief WDI_SsrTimerCB
26861 Callback function for SSR timer, if this is called then the graceful
26862 shutdown for Riva did not happen.
26863
26864 @param pUserData : user data to timer
26865
26866 @see
26867 @return none
26868*/
26869void
26870WDI_SsrTimerCB
26871(
26872 void *pUserData
26873)
26874{
26875 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26877
26878 if (NULL == pWDICtx )
26879 {
26880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026881 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026882 WDI_ASSERT(0);
26883 return;
26884 }
26885 wpalRivaSubystemRestart();
26886
26887 return;
26888
26889}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070026890
26891/**
26892 @brief WDI_SetEnableSSR -
26893 This API is called to enable/disable SSR on WDI timeout.
26894
26895 @param enableSSR : enable/disable SSR
26896
26897 @see
26898 @return none
26899*/
26900void WDI_SetEnableSSR(wpt_boolean enableSSR)
26901{
26902 gWDICb.bEnableSSR = enableSSR;
26903}