blob: 3ccf3bf31c247ac8cb1e6ea4c727b87b23402d56 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Varun Reddy Yeturu2ce47b32014-01-09 21:55:37 -08002 * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08003 *
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
Jeff Johnson295189b2012-06-20 16:38:30 -070059===========================================================================*/
60
61/*===========================================================================
62
63 EDIT HISTORY FOR FILE
64
65
66 This section contains comments describing changes made to the module.
67 Notice that changes are listed in reverse chronological order.
68
69
70 $Header$$DateTime$$Author$
71
72
73 when who what, where, why
74---------- --- --------------------------------------------------------
7510/05/11 hap Adding support for Keep Alive
762010-08-09 lti Created module
77
78===========================================================================*/
79
80/*----------------------------------------------------------------------------
81 * Include Files
82 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070083#include "wlan_qct_wdi.h"
84#include "wlan_qct_wdi_i.h"
85#include "wlan_qct_wdi_sta.h"
86#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070087
Jeff Johnsone7245742012-09-05 17:12:55 -070088#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070089
90#include "wlan_qct_pal_api.h"
91#include "wlan_qct_pal_type.h"
92#include "wlan_qct_pal_status.h"
93#include "wlan_qct_pal_sync.h"
94#include "wlan_qct_pal_msg.h"
95#include "wlan_qct_pal_trace.h"
96#include "wlan_qct_pal_packet.h"
97
Jeff Johnsone7245742012-09-05 17:12:55 -070098#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070099
100#include "wlan_hal_msg.h"
101
Jeff Johnson295189b2012-06-20 16:38:30 -0700102#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-08-29 15:27:56 -0700103#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700104
105/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700106 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700107 ===========================================================================*/
108#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
109
Jeff Johnsone7245742012-09-05 17:12:55 -0700110#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
111#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
112
Yue Ma70627492013-03-28 11:33:46 -0700113#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700114
115#ifdef FEATURE_WLAN_SCAN_PNO
116#define WDI_PNO_VERSION_MASK 0x8000
117#endif
118
119/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700120static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700121/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* array of features supported. Need to add a new feature
124 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
125 */
126static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800127 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800128#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700129 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800130#else
131 ,FEATURE_NOT_SUPPORTED
132#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800133#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700134 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800135#else
136 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800137#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700138 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800139#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700140 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800141#else
142 ,FEATURE_NOT_SUPPORTED
143#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700144 ,FEATURE_NOT_SUPPORTED //9
145 ,FEATURE_NOT_SUPPORTED //10
146 ,FEATURE_NOT_SUPPORTED //11
147 ,FEATURE_NOT_SUPPORTED //12
148 ,FEATURE_NOT_SUPPORTED //13
149 ,FEATURE_NOT_SUPPORTED //14
150 ,FEATURE_NOT_SUPPORTED //15
151 ,FEATURE_NOT_SUPPORTED //16
152 ,FEATURE_NOT_SUPPORTED //17
153 ,FEATURE_NOT_SUPPORTED //18
154 ,FEATURE_NOT_SUPPORTED //19
155 ,FEATURE_NOT_SUPPORTED //20
156 ,FEATURE_NOT_SUPPORTED //21
Yue Mae2e09da2013-08-26 10:59:03 -0700157 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700158#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700159 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700160#else
161 ,FEATURE_NOT_SUPPORTED
162#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700163 ,FEATURE_NOT_SUPPORTED //24
164 ,FEATURE_NOT_SUPPORTED //25
165 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700166 ,FEATURE_NOT_SUPPORTED //27
167 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530168#ifdef FEATURE_WLAN_TDLS
169 ,ADVANCE_TDLS //29
170#else
171 ,FEATURE_NOT_SUPPORTED //29
172#endif
Kanchanapally, Vidyullathab55886f2013-12-24 17:28:54 +0530173 ,FEATURE_NOT_SUPPORTED //30
174 ,FW_IN_TX_PATH //31
175};
Jeff Johnson295189b2012-06-20 16:38:30 -0700176
177/*--------------------------------------------------------------------------
178 WLAN DAL State Machine
179 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700180WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700181{
182 /*WDI_INIT_ST*/
183 {{
184 WDI_MainStart, /*WDI_START_EVENT*/
185 NULL, /*WDI_STOP_EVENT*/
186 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
187 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
188 WDI_MainClose, /*WDI_CLOSE_EVENT*/
189 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
190 }},
191
192 /*WDI_STARTED_ST*/
193 {{
194 WDI_MainStartStarted, /*WDI_START_EVENT*/
195 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
196 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
197 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
198 NULL, /*WDI_CLOSE_EVENT*/
199 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
200 }},
201
202 /*WDI_STOPPED_ST*/
203 {{
204 WDI_MainStart, /*WDI_START_EVENT*/
205 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
206 NULL, /*WDI_REQUEST_EVENT*/
207 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
208 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700209 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700210 }},
211
212 /*WDI_BUSY_ST*/
213 {{
214 WDI_MainStartBusy, /*WDI_START_EVENT*/
215 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
216 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
217 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
218 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
219 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
220 }}
221};
222
Jeff Johnsone7245742012-09-05 17:12:55 -0700223/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700224 DAL Request Processing Array - the functions in this table will only be
225 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700226 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700227 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700228WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700229{
230 /*INIT*/
231 WDI_ProcessStartReq, /* WDI_START_REQ */
232 WDI_ProcessStopReq, /* WDI_STOP_REQ */
233 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
234
235 /*SCAN*/
236 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
237 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
238 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
239 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
240
241 /*ASSOCIATION*/
242 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
243 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
244 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
245 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
246 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
247
248 /* Security */
249 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
250 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
251 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
252 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
253
254 /* QoS and BA APIs */
255 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
256 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
257 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
258 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
259 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
260
261 /* Miscellaneous Control APIs */
262 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
263 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
264 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
265 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
266 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
267
268 /*BA APIs*/
269 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
270 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
271
272 /*Beacon processing APIs*/
273 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
274 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
275
276 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
277 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
278 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
279 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700280 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 /* PowerSave APIs */
282 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
283 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
284 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
285 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
286 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
287 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
288 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
289 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
290 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
291 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
292 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
293 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
294 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
295 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
296 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
297 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
298 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
299 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
300 /*NV Download APIs*/
301 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
302 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
303 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
304#ifdef WLAN_FEATURE_VOWIFI_11R
305 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
306#else
307 NULL,
308#endif /* WLAN_FEATURE_VOWIFI_11R */
309 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
310 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312
313#ifdef FEATURE_OEM_DATA_SUPPORT
314 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
315#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700317#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700319
320 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700321
322#ifdef FEATURE_WLAN_SCAN_PNO
323 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
324 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
325 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
326#else
327 NULL,
328 NULL,
329 NULL,
330#endif /* FEATURE_WLAN_SCAN_PNO */
331
332 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700333
Jeff Johnson295189b2012-06-20 16:38:30 -0700334#ifdef WLAN_FEATURE_PACKET_FILTERING
335 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700337 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700338 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700339 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700340 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700341 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700342 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700343#else
344 NULL,
345 NULL,
346 NULL,
347 NULL,
348#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700349 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
351 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
352
353 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
354#ifdef FEATURE_WLAN_CCX
355 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
356#else
357 NULL,
358#endif
359
360#ifdef WLAN_FEATURE_GTK_OFFLOAD
361 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
362 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
363#else
364 NULL,
365 NULL,
366#endif // WLAN_FEATURE_GTK_OFFLOAD
367
368 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
369 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700370#ifdef WLAN_FEATURE_11AC
371 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800372#else
373 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700374#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800375#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
376 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
377#else
schangd82195a2013-03-13 18:41:24 -0700378 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800379#endif
schangd82195a2013-03-13 18:41:24 -0700380 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700381#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700382 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700383#else
384 NULL,
385#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530386#ifdef FEATURE_WLAN_TDLS
387 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
388#else
389 NULL,
390#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700391#ifdef FEATURE_WLAN_LPHB
392 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
393#else
394 NULL,
395#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530396
397#ifdef FEATURE_WLAN_BATCH_SCAN
398 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
399#else
400 NULL,
401#endif /* FEATURE_WLAN_BATCH_SCAN */
402
Arif Hussainfc753992013-08-09 15:09:58 -0700403 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schangd82195a2013-03-13 18:41:24 -0700404 /*-------------------------------------------------------------------------
405 Indications
406 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800408 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530409 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
410 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700411#ifdef WLAN_FEATURE_11W
412 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
413#else
414 NULL,
415#endif
Yue Ma365933a2013-08-14 15:59:08 -0700416 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
417 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530418#ifdef FEATURE_WLAN_BATCH_SCAN
419 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
420 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
421#else
422 NULL,
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700425 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700426};
427
428
Jeff Johnsone7245742012-09-05 17:12:55 -0700429/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 DAL Request Processing Array - the functions in this table will only be
431 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700432 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700433 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700434WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700435{
436 /*INIT*/
437 WDI_ProcessStartRsp, /* WDI_START_RESP */
438 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
439 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
440
441 /*SCAN*/
442 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
443 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
444 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
445 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
446
447 /* ASSOCIATION*/
448 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
449 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
450 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
451 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
452 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
453
454 /* Security */
455 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
456 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
458 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
459
460 /* QoS and BA APIs */
461 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
462 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
463 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
464 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
465 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
466
467 /* Miscellaneous Control APIs */
468 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
469 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
470 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
471 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
472 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
473
474 /* BA APIs*/
475 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
476 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 /* IBSS APIs*/
479 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
480 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
481
482 /*Soft AP APIs*/
483 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
484 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
485 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
486 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
487
488 /* PowerSave APIs */
489 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
490 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
491 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
492 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
493 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
494 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
495 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
496 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
497 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
498 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
499 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
500 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
501 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
502 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
503 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
504 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
505 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
506 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
509 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
510
511 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
512 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
513#ifdef WLAN_FEATURE_VOWIFI_11R
514 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
515#else
516 NULL,
517#endif /* WLAN_FEATURE_VOWIFI_11R */
518 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
519 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700520#ifdef FEATURE_OEM_DATA_SUPPORT
521 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
522#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533#ifdef FEATURE_WLAN_SCAN_PNO
534 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
535 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
536 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
537#else
538 NULL,
539 NULL,
540 NULL,
541#endif // FEATURE_WLAN_SCAN_PNO
542
543 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
544
545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548#ifdef WLAN_FEATURE_PACKET_FILTERING
549 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560 NULL,
561 NULL,
562#endif // WLAN_FEATURE_PACKET_FILTERING
563
564 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
565 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
566
567 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
568#ifdef FEATURE_WLAN_CCX
569 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
570#else
571 NULL,
572#endif
573
574#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700575 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
576 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700577#else
578 NULL,
579 NULL,
580#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
582 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700583#ifdef WLAN_FEATURE_11AC
584 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700585#else
586 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
589 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
590#else
591 NULL,
592#endif
schangd82195a2013-03-13 18:41:24 -0700593 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700594#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700595 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700596#else
597 NULL,
598#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530599#ifdef FEATURE_WLAN_TDLS
600 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
601#else
602 NULL,
603#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530609
610#ifdef FEATURE_WLAN_BATCH_SCAN
611 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
612#else
613 NULL,
614#endif /*FEATURE_WLAN_BATCH_SCAN*/
615
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 /*---------------------------------------------------------------------
617 Indications
618 ---------------------------------------------------------------------*/
619 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
620 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
621 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
622 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
623 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
624 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
625
626 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
627
628 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
629
Jeff Johnson295189b2012-06-20 16:38:30 -0700630 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700631
632#ifdef FEATURE_WLAN_SCAN_PNO
633 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
634#else
635 NULL,
636#endif // FEATURE_WLAN_SCAN_PNO
637
638#ifdef WLAN_WAKEUP_EVENTS
639 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
640#else // WLAN_WAKEUP_EVENTS
641 NULL,
642#endif // WLAN_WAKEUP_EVENTS
643
644 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800645
Viral Modi9dc288a2012-12-10 13:09:21 -0800646 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530647#ifdef FEATURE_WLAN_TDLS
648 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
649#else
650 NULL,
651#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700652
653#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700654 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700655#else
656 NULL,
657#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700658
659 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700660
661 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530662
663#ifdef FEATURE_WLAN_BATCH_SCAN
664 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
665#else
666 NULL,
667#endif
668
Leo Changd95d6622013-12-15 15:18:55 -0800669#ifdef FEATURE_WLAN_CH_AVOID
670 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
671#else
672 NULL,
673#endif /* FEATURE_WLAN_CH_AVOID */
674
Jeff Johnson295189b2012-06-20 16:38:30 -0700675};
676
677
Jeff Johnsone7245742012-09-05 17:12:55 -0700678/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700679 WLAN DAL Global Control Block
680 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700681WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700682static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
683
Jeff Johnsone7245742012-09-05 17:12:55 -0700684const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700685
686/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700687WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700688void* WDI_GET_PAL_CTX( void )
689{
Jeff Johnsone7245742012-09-05 17:12:55 -0700690 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700691}/*WDI_GET_PAL_CTX*/
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700694 Helper inline converters
695 ============================================================================*/
696/*Convert WDI driver type into HAL driver type*/
697WPT_STATIC WPT_INLINE WDI_Status
698WDI_HAL_2_WDI_STATUS
699(
700 eHalStatus halStatus
701);
702
703/*Convert WDI request type into HAL request type*/
704WPT_STATIC WPT_INLINE tHalHostMsgType
705WDI_2_HAL_REQ_TYPE
706(
707 WDI_RequestEnumType wdiReqType
708);
709
710/*Convert WDI response type into HAL response type*/
711WPT_STATIC WPT_INLINE WDI_ResponseEnumType
712HAL_2_WDI_RSP_TYPE
713(
714 tHalHostMsgType halMsg
715);
716
717/*Convert WDI driver type into HAL driver type*/
718WPT_STATIC WPT_INLINE tDriverType
719WDI_2_HAL_DRV_TYPE
720(
721 WDI_DriverType wdiDriverType
722);
723
724/*Convert WDI stop reason into HAL stop reason*/
725WPT_STATIC WPT_INLINE tHalStopType
726WDI_2_HAL_STOP_REASON
727(
728 WDI_StopType wdiStopType
729);
730
731/*Convert WDI scan mode type into HAL scan mode type*/
732WPT_STATIC WPT_INLINE eHalSysMode
733WDI_2_HAL_SCAN_MODE
734(
735 WDI_ScanMode wdiScanMode
736);
737
738/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700739WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700740WDI_2_HAL_SEC_CH_OFFSET
741(
742 WDI_HTSecondaryChannelOffset wdiSecChOffset
743);
744
745/*Convert WDI BSS type into HAL BSS type*/
746WPT_STATIC WPT_INLINE tSirBssType
747WDI_2_HAL_BSS_TYPE
748(
749 WDI_BssType wdiBSSType
750);
751
752/*Convert WDI NW type into HAL NW type*/
753WPT_STATIC WPT_INLINE tSirNwType
754WDI_2_HAL_NW_TYPE
755(
756 WDI_NwType wdiNWType
757);
758
759/*Convert WDI chanel bonding type into HAL cb type*/
760WPT_STATIC WPT_INLINE ePhyChanBondState
761WDI_2_HAL_CB_STATE
762(
763 WDI_PhyChanBondState wdiCbState
764);
765
766/*Convert WDI chanel bonding type into HAL cb type*/
767WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
768WDI_2_HAL_HT_OPER_MODE
769(
770 WDI_HTOperatingMode wdiHTOperMode
771);
772
773/*Convert WDI mimo PS type into HAL mimo PS type*/
774WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
775WDI_2_HAL_MIMO_PS
776(
777 WDI_HTMIMOPowerSaveState wdiHTOperMode
778);
779
780/*Convert WDI ENC type into HAL ENC type*/
781WPT_STATIC WPT_INLINE tAniEdType
782WDI_2_HAL_ENC_TYPE
783(
784 WDI_EncryptType wdiEncType
785);
786
787/*Convert WDI WEP type into HAL WEP type*/
788WPT_STATIC WPT_INLINE tAniWepType
789WDI_2_HAL_WEP_TYPE
790(
791 WDI_WepType wdiWEPType
792);
793
794/*Convert WDI Link State into HAL Link State*/
795WPT_STATIC WPT_INLINE tSirLinkState
796WDI_2_HAL_LINK_STATE
797(
798 WDI_LinkStateType wdiLinkState
799);
800
Jeff Johnsone7245742012-09-05 17:12:55 -0700801/*Translate a STA Context from WDI into HAL*/
802WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700803void
804WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700805(
Jeff Johnson295189b2012-06-20 16:38:30 -0700806 tConfigStaParams* phalConfigSta,
807 WDI_ConfigStaReqInfoType* pwdiConfigSta
808);
Jeff Johnsone7245742012-09-05 17:12:55 -0700809
810/*Translate a Rate set info from WDI into HAL*/
811WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700812WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700813(
Jeff Johnson295189b2012-06-20 16:38:30 -0700814 tSirMacRateSet* pHalRateSet,
815 WDI_RateSet* pwdiRateSet
816);
817
818/*Translate an EDCA Parameter Record from WDI into HAL*/
819WPT_STATIC WPT_INLINE void
820WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700821(
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 tSirMacEdcaParamRecord* phalEdcaParam,
823 WDI_EdcaParamRecord* pWDIEdcaParam
824);
825
826/*Copy a management frame header from WDI fmt into HAL fmt*/
827WPT_STATIC WPT_INLINE void
828WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
829(
830 tSirMacMgmtHdr* pmacMgmtHdr,
831 WDI_MacMgmtHdr* pwdiMacMgmtHdr
832);
833
834/*Copy config bss parameters from WDI fmt into HAL fmt*/
835WPT_STATIC WPT_INLINE void
836WDI_CopyWDIConfigBSSToHALConfigBSS
837(
838 tConfigBssParams* phalConfigBSS,
839 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
840);
841
Jeff Johnsone7245742012-09-05 17:12:55 -0700842/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 pointed to by user data */
844WPT_STATIC WPT_INLINE void
845WDI_ExtractRequestCBFromEvent
846(
847 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700848 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 void** ppUserData
850);
851
852wpt_uint8
853WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700854(
Jeff Johnson295189b2012-06-20 16:38:30 -0700855 WDI_ControlBlockType* pWDICtx,
856 WDI_BSSSessionType** ppSession
857);
858
859void
860WDI_AddBcastSTAtoSTATable
861(
862 WDI_ControlBlockType* pWDICtx,
863 WDI_AddStaParams * staParams,
864 wpt_uint16 usBcastStaIdx
865);
866
867WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700868(
Jeff Johnson295189b2012-06-20 16:38:30 -0700869 WDI_ControlBlockType* pWDICtx,
870 WDI_EventInfoType* pEventData
871);
872
873void
874WDI_SetPowerStateCb
875(
876 wpt_status status,
877 unsigned int dxePhyAddr,
878 void *pContext
879);
880
881#define CASE_RETURN_STRING( str ) \
882 case ( ( str ) ): return( #str ); break \
883
884/**
885 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700886
887 @param wdiReqMsgId: WDI Message request Id
888
889 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700890 @return Result of the function call
891*/
892static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
893{
894 switch (wdiReqMsgId)
895 {
896 CASE_RETURN_STRING( WDI_START_REQ );
897 CASE_RETURN_STRING( WDI_STOP_REQ );
898 CASE_RETURN_STRING( WDI_CLOSE_REQ );
899 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
900 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
901 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
902 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
903 CASE_RETURN_STRING( WDI_JOIN_REQ );
904 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
905 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
906 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
907 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
908 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
909 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
910 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
911 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
912 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
913 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
914 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
915 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
916 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
917 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
918 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
919 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
920 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
921 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
922 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
923 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
924 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
925 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
926 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
927 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
928 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
929 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussainfc753992013-08-09 15:09:58 -0700930 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700931 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530932#ifdef FEATURE_WLAN_TDLS
933 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
934#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700935 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
936 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
937 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
938 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
939 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
940 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
941 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
942 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
943 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
944 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
945 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
946 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
947 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
948 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
949 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
950 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
951 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
952 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
953 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
954 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
955 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
956 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
957 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
958 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
959 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700960 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700961 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
962 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
963 #ifdef FEATURE_WLAN_SCAN_PNO
964 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
965 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
966 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
967 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700968#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700969 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700970#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
972 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
973 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
974 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
975 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
976 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
977 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
978 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
979 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800980 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800981 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700982#ifdef WLAN_FEATURE_11W
983 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
984#endif
Rajeev3db91f12013-10-05 11:03:42 +0530985#ifdef FEATURE_WLAN_BATCH_SCAN
986 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
987 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
988 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
989#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700990 default:
991 return "Unknown WDI MessageId";
992 }
993}
994
995
996
997/**
998 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700999
1000 @param wdiRespMsgId: WDI Message response Id
1001
1002 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 @return Result of the function call
1004*/
1005static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1006{
1007 switch (wdiRespMsgId)
1008 {
1009 CASE_RETURN_STRING( WDI_START_RESP );
1010 CASE_RETURN_STRING( WDI_STOP_RESP );
1011 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1012 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1013 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1014 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1015 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1016 CASE_RETURN_STRING( WDI_JOIN_RESP );
1017 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1018 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1019 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1020 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1021 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1022 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1023 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1024 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1025 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1026 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1027 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1028 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1029 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1030 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1031 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1032 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1033 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1034 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1035 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1036 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1037 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1038 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1039 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1040 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1041 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1042 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1043 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301044#ifdef FEATURE_WLAN_TDLS
1045 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1046 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1047#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001048 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1049 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1050 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1051 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1052 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1053 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1054 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1055 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1056 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1057 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1058 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1059 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1060 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1061 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1062 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1063 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1064 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1065 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1066 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1067 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1068 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1069 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1070 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1071 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1072 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001073 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1075 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1076 #ifdef FEATURE_WLAN_SCAN_PNO
1077 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1078 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1079 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1080 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001081#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001082 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001083#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1085 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1086 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1087 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1088 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1089 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1090 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1091 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001092 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301093#ifdef FEATURE_WLAN_BATCH_SCAN
1094 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1095#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 default:
1097 return "Unknown WDI MessageId";
1098 }
1099}
1100
1101/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301102 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1103 Capability bitmap array.
1104 @param capabilityBitmap - Base address of Bitmap array
1105 @see
1106 @returns None
1107 */
1108void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1109{
1110 int i;
1111 char capStr[512];
1112 char *pCapStr = capStr;
1113 for (i = 0; i < 32; i++) {
1114 if ((*(capabilityBitmap + 0) & (1 << i))) {
1115 switch(i) {
1116 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1117 pCapStr += strlen("MCC");
1118 break;
1119 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1120 pCapStr += strlen("P2P");
1121 break;
1122 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1123 pCapStr += strlen("DOT11AC");
1124 break;
1125 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1126 pCapStr += strlen("SLM_SESSIONIZATION");
1127 break;
1128 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1129 pCapStr += strlen("DOT11AC_OPMODE");
1130 break;
1131 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1132 pCapStr += strlen("SAP32STA");
1133 break;
1134 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1135 pCapStr += strlen("TDLS");
1136 break;
1137 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1138 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1139 break;
1140 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1141 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1142 break;
1143 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1144 pCapStr += strlen("BEACON_OFFLOAD");
1145 break;
1146 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1147 pCapStr += strlen("SCAN_OFFLOAD");
1148 break;
1149 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1150 pCapStr += strlen("ROAM_OFFLOAD");
1151 break;
1152 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1153 pCapStr += strlen("BCN_MISS_OFFLOAD");
1154 break;
1155 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1156 pCapStr += strlen("STA_POWERSAVE");
1157 break;
1158 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1159 pCapStr += strlen("AP_UAPSD");
1160 break;
1161 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1162 pCapStr += strlen("AP_DFS");
1163 break;
1164 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1165 pCapStr += strlen("BLOCKACK");
1166 break;
1167 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1168 pCapStr += strlen("PHY_ERR");
1169 break;
1170 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1171 pCapStr += strlen("BCN_FILTER");
1172 break;
1173 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1174 pCapStr += strlen("RTT");
1175 break;
1176 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1177 pCapStr += strlen("RATECTRL");
1178 break;
1179 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1180 pCapStr += strlen("WOW");
1181 break;
1182 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1183 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1184 break;
Kanchanapally, Vidyullathab55886f2013-12-24 17:28:54 +05301185 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1186 pCapStr += strlen("FW_IN_TX_PATH");
1187 break;
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301188 }
1189 *pCapStr++ = ',';
1190 *pCapStr++ = ' ';
1191 }
1192 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301193 pCapStr -= 2;
1194 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301195 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301197}
1198
1199/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001201
1202 @param halStatusId: HAL status Id
1203
1204 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001205 @return Result of the function call
1206*/
1207static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1208{
1209 switch (halStatusId)
1210 {
1211 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1212 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1213 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1214 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1215 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1216 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1217 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1218 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1219 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1220 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1221 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1222 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1224 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1225 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1226 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1227 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1228 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1229 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1230 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1231 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1232 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1233 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1234 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1235 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1236 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1237 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1238 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1239 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1240 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1241 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1242 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1243 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1244 default:
1245 return "Unknown HAL status";
1246 }
1247}
1248
Jeff Johnsone7245742012-09-05 17:12:55 -07001249/*========================================================================
1250
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001252
Jeff Johnson295189b2012-06-20 16:38:30 -07001253==========================================================================*/
1254
1255/**
1256 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001257
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 DAL will allocate all the resources it needs. It will open PAL, it will also
1259 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 DXE/SMD or any other drivers that they need.
1261
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 @param pOSContext: pointer to the OS context provided by the UMAC
1263 will be passed on to PAL on Open
1264 ppWDIGlobalCtx: output pointer of Global Context
1265 pWdiDevCapability: output pointer of device capability
1266
1267 @return Result of the function call
1268*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001269WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001270WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001271(
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 void* pOSContext,
1273 void** ppWDIGlobalCtx,
1274 WDI_DeviceCapabilityType* pWdiDevCapability,
1275 unsigned int driverType
1276)
1277{
1278 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001279 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001281 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1283
1284 /*---------------------------------------------------------------------
1285 Sanity check
1286 ---------------------------------------------------------------------*/
1287 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1288 {
1289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1290 "Invalid input parameters in WDI_Init");
1291
Jeff Johnsone7245742012-09-05 17:12:55 -07001292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001293 }
1294
1295 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001296 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 ---------------------------------------------------------------------*/
1298 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1299 {
1300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1301 "WDI module already initialized - return");
1302
Jeff Johnsone7245742012-09-05 17:12:55 -07001303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 }
1305
1306 /*Module is now initialized - this flag is to ensure the fact that multiple
1307 init will not happen on WDI
1308 !! - potential race does exist because read and set are not atomic,
1309 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001311
1312 /*Setup the control block */
1313 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001314 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001315
1316 /*Setup the STA Table*/
1317 wdiStatus = WDI_STATableInit(&gWDICb);
1318 if ( WDI_STATUS_SUCCESS != wdiStatus )
1319 {
1320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1321 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001322 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 goto fail_STATableInit;
1324 }
1325
1326 /*------------------------------------------------------------------------
1327 Open the PAL
1328 ------------------------------------------------------------------------*/
1329 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1331 {
1332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1333 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001334 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 goto fail_wpalOpen;
1336 }
1337
1338 /*Initialize main synchro mutex - it will be used to ensure integrity of
1339 the main WDI Control Block*/
1340 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1341 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1342 {
1343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1344 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001345 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 goto fail_mutex;
1347 }
1348
1349 /*Initialize the response timer - it will be used to time all messages
1350 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001351 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1352 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 &gWDICb);
1354 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1355 {
1356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1357 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001358 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 goto fail_timer;
1360 }
1361
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001362 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1363 WDI_SsrTimerCB,
1364 &gWDICb);
1365 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1366 {
1367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1368 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001369 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001370 goto fail_timer2;
1371 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001372 /* Initialize the WDI Pending Request Queue*/
1373 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1374 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1375 {
1376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1377 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001378 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001379 goto fail_pend_queue;
1380 }
1381
1382 /*Init WDI Pending Assoc Id Queue */
1383 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1384 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1385 {
1386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1387 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001388 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 goto fail_assoc_queue;
1390 }
1391
1392 /*Initialize the BSS sessions pending Queue */
1393 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1394 {
1395 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1396 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1397 {
1398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1399 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001400 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001401 goto fail_bss_queue;
1402 }
1403 }
1404
1405 /*Indicate the control block is sufficiently initialized for callbacks*/
1406 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1407
1408 /*------------------------------------------------------------------------
1409 Initialize the Data Path Utility Module
1410 ------------------------------------------------------------------------*/
1411 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1412 if ( WDI_STATUS_SUCCESS != wdiStatus )
1413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1415 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001416 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 goto fail_dp_util_init;
1418 }
1419
1420 /* Init Set power state event */
1421 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001422 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 {
1424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1425 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001426 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 goto fail_power_event;
1428 }
1429
1430 /* Init WCTS action event */
1431 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001432 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001433 {
1434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1435 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001436 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001437 goto fail_wcts_event;
1438 }
1439
1440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001441 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001442 ------------------------------------------------------------------------*/
1443 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1444 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001445 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 wctsCBs.wctsRxMsgCBData = &gWDICb;
1447
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 WDI_CT_CHANNEL_SIZE,
1451 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001452
1453 if ( NULL == gWDICb.wctsHandle )
1454 {
1455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001456 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 goto fail_wcts_open;
1458 }
1459
1460 gWDICb.driverMode = (tDriverType)driverType;
1461 /* FTM mode not need to open Transport Driver */
1462 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 /*------------------------------------------------------------------------
1465 Open the Data Transport
1466 ------------------------------------------------------------------------*/
1467 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1468 {
1469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001470 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001471 goto fail_wdts_open;
1472 }
1473 }
1474
1475 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001476 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001477
1478 /*Send the context as a ptr to the global WDI Control Block*/
1479 *ppWDIGlobalCtx = &gWDICb;
1480
1481 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001482 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001483 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1484 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1485 return WDI_STATUS_SUCCESS;
1486
1487 /* ERROR handlers
1488 Undo everything that completed successfully */
1489
1490 fail_wdts_open:
1491 {
1492 wpt_status eventStatus;
1493
1494 /* Closing WCTS in this scenario is tricky since it has to close
1495 the SMD channel and then we get notified asynchronously when
1496 the channel has been closed. So we take some of the logic from
1497 the "normal" close procedure in WDI_Close()
1498 */
1499
1500 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001501 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 {
1503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001504 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 }
1506
1507 WCTS_CloseTransport(gWDICb.wctsHandle);
1508
1509 /* Wait for WCTS to close the control transport. If we were able
1510 to reset the event flag, then we'll wait for the event,
1511 otherwise we'll wait for a maximum amount of time required for
1512 the channel to be closed */
1513 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1514 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001515 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 WDI_WCTS_ACTION_TIMEOUT);
1517 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1518 {
1519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001520 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001521 }
1522 }
1523 else
1524 {
1525 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1526 }
1527 }
1528 fail_wcts_open:
1529 wpalEventDelete(&gWDICb.wctsActionEvent);
1530 fail_wcts_event:
1531 wpalEventDelete(&gWDICb.setPowerStateEvent);
1532 fail_power_event:
1533 WDI_DP_UtilsExit(&gWDICb);
1534 fail_dp_util_init:
1535 gWDICb.magic = 0;
1536 fail_bss_queue:
1537 /* entries 0 thru i-1 were successfully initialized */
1538 while (0 < i)
1539 {
1540 i--;
1541 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1542 }
1543 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1544 fail_assoc_queue:
1545 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1546 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001547 wpalTimerDelete(&gWDICb.ssrTimer);
1548 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 wpalTimerDelete(&gWDICb.wptResponseTimer);
1550 fail_timer:
1551 wpalMutexDelete(&gWDICb.wptMutex);
1552 fail_mutex:
1553 wpalClose(gWDICb.pPALContext);
1554 fail_wpalOpen:
1555 WDI_STATableClose(&gWDICb);
1556 fail_STATableInit:
1557 gWDIInitialized = eWLAN_PAL_FALSE;
1558
1559 return WDI_STATUS_E_FAILURE;
1560
1561}/*WDI_Init*/;
1562
1563/**
1564 @brief WDI_Start will be called when the upper MAC is ready to
1565 commence operation with the WLAN Device. Upon the call
1566 of this API the WLAN DAL will pack and send a HAL Start
1567 message to the lower RIVA sub-system if the SMD channel
1568 has been fully opened and the RIVA subsystem is up.
1569
1570 If the RIVA sub-system is not yet up and running DAL
1571 will queue the request for Open and will wait for the
1572 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001573 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001574
1575 WDI_Init must have been called.
1576
Jeff Johnsone7245742012-09-05 17:12:55 -07001577 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001579
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 wdiStartRspCb: callback for passing back the response of
1581 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001584 callback
1585
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 @see WDI_Start
1587 @return Result of the function call
1588*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001589WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001590WDI_Start
1591(
1592 WDI_StartReqParamsType* pwdiStartParams,
1593 WDI_StartRspCb wdiStartRspCb,
1594 void* pUserData
1595)
1596{
1597 WDI_EventInfoType wdiEventData;
1598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1599
1600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 ------------------------------------------------------------------------*/
1603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1604 {
1605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1606 "WDI API call before module is initialized - Fail request");
1607
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 }
1610
1611 /*------------------------------------------------------------------------
1612 Fill in Event data and post to the Main FSM
1613 ------------------------------------------------------------------------*/
1614 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 wdiEventData.pEventData = pwdiStartParams;
1616 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1617 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 wdiEventData.pUserData = pUserData;
1619
1620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1621
1622}/*WDI_Start*/
1623
1624/**
1625 @brief WDI_Stop will be called when the upper MAC is ready to
1626 stop any operation with the WLAN Device. Upon the call
1627 of this API the WLAN DAL will pack and send a HAL Stop
1628 message to the lower RIVA sub-system if the DAL Core is
1629 in started state.
1630
1631 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001632
1633 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001634
1635 WDI_Start must have been called.
1636
Jeff Johnsone7245742012-09-05 17:12:55 -07001637 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001638 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001639
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 wdiStopRspCb: callback for passing back the response of
1641 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001642
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 callback
1645
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 @see WDI_Start
1647 @return Result of the function call
1648*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001650WDI_Stop
1651(
1652 WDI_StopReqParamsType* pwdiStopParams,
1653 WDI_StopRspCb wdiStopRspCb,
1654 void* pUserData
1655)
1656{
1657 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001658 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1660
1661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001663 ------------------------------------------------------------------------*/
1664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1667 "WDI API call before module is initialized - Fail request");
1668
Jeff Johnsone7245742012-09-05 17:12:55 -07001669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 }
1671
Jeff Johnson43971f52012-07-17 12:26:56 -07001672 /*Access to the global state must be locked before cleaning */
1673 wpalMutexAcquire(&pWDICtx->wptMutex);
1674
1675 /*Clear all pending request*/
1676 WDI_ClearPendingRequests(pWDICtx);
1677
1678 /*We have completed cleaning unlock now*/
1679 wpalMutexRelease(&pWDICtx->wptMutex);
1680
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 /* Free the global variables */
1682 wpalMemoryFree(gpHostWlanFeatCaps);
1683 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001684 gpHostWlanFeatCaps = NULL;
1685 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001686
1687 /*------------------------------------------------------------------------
1688 Fill in Event data and post to the Main FSM
1689 ------------------------------------------------------------------------*/
1690 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001691 wdiEventData.pEventData = pwdiStopParams;
1692 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1693 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 wdiEventData.pUserData = pUserData;
1695
1696 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1697
1698}/*WDI_Stop*/
1699
1700
1701
1702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 needs to interact with DAL. DAL will free its control
1705 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001706
1707 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001708
1709 WDI_Stop must have been called.
1710
1711 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001712
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 @see WDI_Stop
1714 @return Result of the function call
1715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001717WDI_Close
1718(
1719 void
1720)
1721{
1722 wpt_uint8 i;
1723 WDI_EventInfoType wdiEventData;
1724 wpt_status wptStatus;
1725 wpt_status eventStatus;
1726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1727
1728 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 ------------------------------------------------------------------------*/
1731 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1732 {
1733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1734 "WDI API call before module is initialized - Fail request");
1735
Jeff Johnsone7245742012-09-05 17:12:55 -07001736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 }
1738
1739 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1740 (the control transport will be closed by the FSM and we'll want
1741 to wait until that completes)*/
1742 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 {
1745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001746 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 /* fall through and try to finish closing via the FSM */
1748 }
1749
1750 /*------------------------------------------------------------------------
1751 Fill in Event data and post to the Main FSM
1752 ------------------------------------------------------------------------*/
1753 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001754 wdiEventData.pEventData = NULL;
1755 wdiEventData.uEventDataSize = 0;
1756 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 wdiEventData.pUserData = NULL;
1758
1759 gWDIInitialized = eWLAN_PAL_FALSE;
1760
1761 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1762
1763 /*Wait for WCTS to close the control transport
1764 (but only if we were able to reset the event flag*/
1765 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1766 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 WDI_WCTS_ACTION_TIMEOUT);
1769 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001772 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 }
1774 }
1775
1776 /* Destroy the WCTS action event */
1777 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1778 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1779 {
1780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1781 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 }
1784
1785 /* Destroy the Set Power State event */
1786 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1787 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1790 "WDI Close failed to destroy an event");
1791
Jeff Johnsone7245742012-09-05 17:12:55 -07001792 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 }
1794
1795 /*------------------------------------------------------------------------
1796 Closes the Data Path Utility Module
1797 ------------------------------------------------------------------------*/
1798 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1799 {
1800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1801 "WDI Init failed to close the DP Util Module");
1802
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 }
1805
1806 /*destroy the BSS sessions pending Queue */
1807 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1808 {
1809 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1810 }
1811
1812 /* destroy the WDI Pending Assoc Id Request Queue*/
1813 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1814
1815 /* destroy the WDI Pending Request Queue*/
1816 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001817
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 /*destroy the response timer */
1819 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1820
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001821 /*destroy the SSR timer */
1822 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1823
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 /*invalidate the main synchro mutex */
1825 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1826 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1827 {
1828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1829 "Failed to delete mutex %d", wptStatus);
1830 WDI_ASSERT(0);
1831 }
1832
1833 /*Clear control block. note that this will clear the "magic"
1834 which will inhibit all asynchronous callbacks*/
1835 WDI_CleanCB(&gWDICb);
1836
1837 return wptStatus;
1838
1839}/*WDI_Close*/
1840
1841/**
1842 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1843 This will do most of the WDI stop & close
1844 operations without doing any handshake with Riva
1845
1846 This will also make sure that the control transport
1847 will NOT be closed.
1848
1849 This request will not be queued.
1850
1851
1852 WDI_Start must have been called.
1853
1854 @param closeTransport: Close control channel if this is set
1855
1856 @return Result of the function call
1857*/
1858WDI_Status
1859WDI_Shutdown
1860(
1861 wpt_boolean closeTransport
1862)
1863{
1864 WDI_EventInfoType wdiEventData;
1865 wpt_status wptStatus;
1866 int i = 0;
1867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1868
1869 /*------------------------------------------------------------------------
1870 Sanity Check
1871 ------------------------------------------------------------------------*/
1872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1873 {
1874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1875 "WDI API call before module is initialized - Fail request");
1876
1877 return WDI_STATUS_E_NOT_ALLOWED;
1878 }
1879
1880 /*------------------------------------------------------------------------
1881 Fill in Event data and post to the Main FSM
1882 ------------------------------------------------------------------------*/
1883 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1884 wdiEventData.pEventData = NULL;
1885 wdiEventData.uEventDataSize = 0;
1886
1887 /* Shutdown will not be queued, if the state is busy timer will be
1888 * stopped & this message will be processed.*/
1889 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1890 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001893 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001894 }
1895 /* Destroy the Set Power State event */
1896 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1897 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1898 {
1899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1900 "WDI Close failed to destroy an event");
1901
1902 WDI_ASSERT(0);
1903 }
1904 /*------------------------------------------------------------------------
1905 Closes the Data Path Utility Module
1906 ------------------------------------------------------------------------*/
1907 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1908 {
1909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1910 "WDI Init failed to close the DP Util Module");
1911
1912 WDI_ASSERT(0);
1913 }
1914 if ( closeTransport )
1915 {
1916 /* Close control transport, called from module unload */
1917 WCTS_CloseTransport(gWDICb.wctsHandle);
1918 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001919 else
1920 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001921 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001922 the pending messages in the transport queue */
1923 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1924 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 /*destroy the BSS sessions pending Queue */
1926 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1927 {
1928 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1929 }
1930
1931 /* destroy the WDI Pending Assoc Id Request Queue*/
1932 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1933 /* destroy the WDI Pending Request Queue*/
1934 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1935 /*destroy the response timer */
1936 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001937 /*destroy the SSR timer */
1938 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001939
1940 /*invalidate the main synchro mutex */
1941 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1942 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1943 {
1944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001945 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 WDI_ASSERT(0);
1947 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001948 /* Free the global variables */
1949 wpalMemoryFree(gpHostWlanFeatCaps);
1950 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001951 gpHostWlanFeatCaps = NULL;
1952 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 /*Clear control block. note that this will clear the "magic"
1954 which will inhibit all asynchronous callbacks*/
1955 WDI_CleanCB(&gWDICb);
1956 return wptStatus;
1957
1958}/*WDI_Shutdown*/
1959
1960
Jeff Johnsone7245742012-09-05 17:12:55 -07001961/*========================================================================
1962
Jeff Johnson295189b2012-06-20 16:38:30 -07001963 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001964
Jeff Johnson295189b2012-06-20 16:38:30 -07001965==========================================================================*/
1966
1967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001968 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 the WLAN Device to get ready for a scan procedure. Upon
1970 the call of this API the WLAN DAL will pack and send a
1971 HAL Init Scan request message to the lower RIVA
1972 sub-system if DAL is in state STARTED.
1973
1974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001976
1977 WDI_Start must have been called.
1978
1979 @param wdiInitScanParams: the init scan parameters as specified
1980 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001981
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 wdiInitScanRspCb: callback for passing back the response
1983 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001984
Jeff Johnson295189b2012-06-20 16:38:30 -07001985 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 callback
1987
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 @see WDI_Start
1989 @return Result of the function call
1990*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001991WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001992WDI_InitScanReq
1993(
1994 WDI_InitScanReqParamsType* pwdiInitScanParams,
1995 WDI_InitScanRspCb wdiInitScanRspCb,
1996 void* pUserData
1997)
1998{
1999 WDI_EventInfoType wdiEventData;
2000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2001
2002 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002003 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002004 ------------------------------------------------------------------------*/
2005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2006 {
2007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2008 "WDI API call before module is initialized - Fail request");
2009
Jeff Johnsone7245742012-09-05 17:12:55 -07002010 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 }
2012
2013 /*------------------------------------------------------------------------
2014 Fill in Event data and post to the Main FSM
2015 ------------------------------------------------------------------------*/
2016 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 wdiEventData.pEventData = pwdiInitScanParams;
2018 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2019 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 wdiEventData.pUserData = pUserData;
2021
2022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2023
2024}/*WDI_InitScanReq*/
2025
2026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wishes to change the Scan channel on the WLAN Device.
2029 Upon the call of this API the WLAN DAL will pack and
2030 send a HAL Start Scan request message to the lower RIVA
2031 sub-system if DAL is in state STARTED.
2032
2033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002035
2036 WDI_InitScanReq must have been called.
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 wdiStartScanRspCb: callback for passing back the
2042 response of the start scan operation received from the
2043 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002044
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 callback
2047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 @see WDI_InitScanReq
2049 @return Result of the function call
2050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002052WDI_StartScanReq
2053(
2054 WDI_StartScanReqParamsType* pwdiStartScanParams,
2055 WDI_StartScanRspCb wdiStartScanRspCb,
2056 void* pUserData
2057)
2058{
2059 WDI_EventInfoType wdiEventData;
2060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2061
2062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 ------------------------------------------------------------------------*/
2065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2068 "WDI API call before module is initialized - Fail request");
2069
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072
2073 /*------------------------------------------------------------------------
2074 Fill in Event data and post to the Main FSM
2075 ------------------------------------------------------------------------*/
2076 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 wdiEventData.pEventData = pwdiStartScanParams;
2078 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2079 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 wdiEventData.pUserData = pUserData;
2081
2082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2083
2084}/*WDI_StartScanReq*/
2085
2086
2087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 wants to end scanning for a particular channel that it
2090 had set before by calling Scan Start on the WLAN Device.
2091 Upon the call of this API the WLAN DAL will pack and
2092 send a HAL End Scan request message to the lower RIVA
2093 sub-system if DAL is in state STARTED.
2094
2095 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002096 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002097
2098 WDI_StartScanReq must have been called.
2099
Jeff Johnsone7245742012-09-05 17:12:55 -07002100 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002102
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 wdiEndScanRspCb: callback for passing back the response
2104 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002105
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002107 callback
2108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 @see WDI_StartScanReq
2110 @return Result of the function call
2111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002113WDI_EndScanReq
2114(
2115 WDI_EndScanReqParamsType* pwdiEndScanParams,
2116 WDI_EndScanRspCb wdiEndScanRspCb,
2117 void* pUserData
2118)
2119{
2120 WDI_EventInfoType wdiEventData;
2121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2122
2123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 ------------------------------------------------------------------------*/
2126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2127 {
2128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2129 "WDI API call before module is initialized - Fail request");
2130
Jeff Johnsone7245742012-09-05 17:12:55 -07002131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 }
2133
2134 /*------------------------------------------------------------------------
2135 Fill in Event data and post to the Main FSM
2136 ------------------------------------------------------------------------*/
2137 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 wdiEventData.pEventData = pwdiEndScanParams;
2139 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2140 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 wdiEventData.pUserData = pUserData;
2142
2143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2144
2145}/*WDI_EndScanReq*/
2146
2147
2148/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 completed the scan process on the WLAN Device. Upon the
2151 call of this API the WLAN DAL will pack and send a HAL
2152 Finish Scan Request request message to the lower RIVA
2153 sub-system if DAL is in state STARTED.
2154
2155 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002157
2158 WDI_InitScanReq must have been called.
2159
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002162
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 wdiFinishScanRspCb: callback for passing back the
2164 response of the finish scan operation received from the
2165 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 callback
2169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 @see WDI_InitScanReq
2171 @return Result of the function call
2172*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002173WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002174WDI_FinishScanReq
2175(
2176 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2177 WDI_FinishScanRspCb wdiFinishScanRspCb,
2178 void* pUserData
2179)
2180{
2181 WDI_EventInfoType wdiEventData;
2182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2183
2184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 ------------------------------------------------------------------------*/
2187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2188 {
2189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2190 "WDI API call before module is initialized - Fail request");
2191
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /*------------------------------------------------------------------------
2196 Fill in Event data and post to the Main FSM
2197 ------------------------------------------------------------------------*/
2198 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002199 wdiEventData.pEventData = pwdiFinishScanParams;
2200 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2201 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 wdiEventData.pUserData = pUserData;
2203
2204 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2205
2206}/*WDI_FinishScanReq*/
2207
Jeff Johnsone7245742012-09-05 17:12:55 -07002208/*========================================================================
2209
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002211
Jeff Johnson295189b2012-06-20 16:38:30 -07002212==========================================================================*/
2213
2214/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 to start an association procedure to a BSS. Upon the
2217 call of this API the WLAN DAL will pack and send a HAL
2218 Join request message to the lower RIVA sub-system if
2219 DAL is in state STARTED.
2220
2221 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002223
2224 WDI_Start must have been called.
2225
Jeff Johnsone7245742012-09-05 17:12:55 -07002226 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002228
Jeff Johnson295189b2012-06-20 16:38:30 -07002229 wdiJoinRspCb: callback for passing back the response of
2230 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002231
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 callback
2234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 @see WDI_Start
2236 @return Result of the function call
2237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002239WDI_JoinReq
2240(
2241 WDI_JoinReqParamsType* pwdiJoinParams,
2242 WDI_JoinRspCb wdiJoinRspCb,
2243 void* pUserData
2244)
2245{
2246 WDI_EventInfoType wdiEventData;
2247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2248
2249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 ------------------------------------------------------------------------*/
2252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2255 "WDI API call before module is initialized - Fail request");
2256
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 }
2259
2260 /*------------------------------------------------------------------------
2261 Fill in Event data and post to the Main FSM
2262 ------------------------------------------------------------------------*/
2263 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 wdiEventData.pEventData = pwdiJoinParams;
2265 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2266 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 wdiEventData.pUserData = pUserData;
2268
2269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2270
2271}/*WDI_JoinReq*/
2272
2273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 wishes to configure the newly acquired or in process of
2276 being acquired BSS to the HW . Upon the call of this API
2277 the WLAN DAL will pack and send a HAL Config BSS request
2278 message to the lower RIVA sub-system if DAL is in state
2279 STARTED.
2280
2281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002283
2284 WDI_JoinReq must have been called.
2285
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002288
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 wdiConfigBSSRspCb: callback for passing back the
2290 response of the config BSS operation received from the
2291 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 callback
2295
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 @see WDI_JoinReq
2297 @return Result of the function call
2298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002300WDI_ConfigBSSReq
2301(
2302 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2303 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2304 void* pUserData
2305)
2306{
2307 WDI_EventInfoType wdiEventData;
2308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2309
2310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 ------------------------------------------------------------------------*/
2313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2314 {
2315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2316 "WDI API call before module is initialized - Fail request");
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 }
2320
2321 /*------------------------------------------------------------------------
2322 Fill in Event data and post to the Main FSM
2323 ------------------------------------------------------------------------*/
2324 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 wdiEventData.pEventData = pwdiConfigBSSParams;
2326 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2327 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiEventData.pUserData = pUserData;
2329
2330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2331
2332}/*WDI_ConfigBSSReq*/
2333
2334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002336 disassociating from the BSS and wishes to notify HW.
2337 Upon the call of this API the WLAN DAL will pack and
2338 send a HAL Del BSS request message to the lower RIVA
2339 sub-system if DAL is in state STARTED.
2340
2341 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002343
2344 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2345
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 wdiDelBSSRspCb: callback for passing back the response
2350 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002351
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 callback
2354
2355 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 @return Result of the function call
2357*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002358WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002359WDI_DelBSSReq
2360(
2361 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2362 WDI_DelBSSRspCb wdiDelBSSRspCb,
2363 void* pUserData
2364)
2365{
2366 WDI_EventInfoType wdiEventData;
2367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2368
2369 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 ------------------------------------------------------------------------*/
2372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2373 {
2374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2375 "WDI API call before module is initialized - Fail request");
2376
Jeff Johnsone7245742012-09-05 17:12:55 -07002377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 }
2379
2380 /*------------------------------------------------------------------------
2381 Fill in Event data and post to the Main FSM
2382 ------------------------------------------------------------------------*/
2383 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 wdiEventData.pEventData = pwdiDelBSSParams;
2385 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2386 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wdiEventData.pUserData = pUserData;
2388
2389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2390
2391}/*WDI_DelBSSReq*/
2392
2393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 associated to a BSS and wishes to configure HW for
2396 associated state. Upon the call of this API the WLAN DAL
2397 will pack and send a HAL Post Assoc request message to
2398 the lower RIVA sub-system if DAL is in state STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_JoinReq must have been called.
2404
2405 @param wdiPostAssocReqParams: the assoc parameters as specified
2406 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiPostAssocRspCb: callback for passing back the
2409 response of the post assoc operation received from the
2410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 callback
2414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 @see WDI_JoinReq
2416 @return Result of the function call
2417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002419WDI_PostAssocReq
2420(
2421 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2422 WDI_PostAssocRspCb wdiPostAssocRspCb,
2423 void* pUserData
2424)
2425{
2426 WDI_EventInfoType wdiEventData;
2427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2428
2429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002431 ------------------------------------------------------------------------*/
2432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2433 {
2434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2435 "WDI API call before module is initialized - Fail request");
2436
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 }
2439
2440 /*------------------------------------------------------------------------
2441 Fill in Event data and post to the Main FSM
2442 ------------------------------------------------------------------------*/
2443 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 wdiEventData.pEventData = pwdiPostAssocReqParams;
2445 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2446 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002447 wdiEventData.pUserData = pUserData;
2448
2449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2450
2451}/*WDI_PostAssocReq*/
2452
2453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 association with another STA has ended and the station
2456 must be deleted from HW. Upon the call of this API the
2457 WLAN DAL will pack and send a HAL Del STA request
2458 message to the lower RIVA sub-system if DAL is in state
2459 STARTED.
2460
2461 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002463
2464 WDI_PostAssocReq must have been called.
2465
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002467 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002468
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 wdiDelSTARspCb: callback for passing back the response
2470 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 callback
2474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 @see WDI_PostAssocReq
2476 @return Result of the function call
2477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002479WDI_DelSTAReq
2480(
2481 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2482 WDI_DelSTARspCb wdiDelSTARspCb,
2483 void* pUserData
2484)
2485{
2486 WDI_EventInfoType wdiEventData;
2487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2488
2489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 ------------------------------------------------------------------------*/
2492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2493 {
2494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2495 "WDI API call before module is initialized - Fail request");
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 }
2499
2500 /*------------------------------------------------------------------------
2501 Fill in Event data and post to the Main FSM
2502 ------------------------------------------------------------------------*/
2503 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 wdiEventData.pEventData = pwdiDelSTAParams;
2505 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2506 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 wdiEventData.pUserData = pUserData;
2508
2509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2510
2511}/*WDI_DelSTAReq*/
2512
Jeff Johnsone7245742012-09-05 17:12:55 -07002513/*========================================================================
2514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002516
Jeff Johnson295189b2012-06-20 16:38:30 -07002517==========================================================================*/
2518
2519/**
2520 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2521 install a BSS encryption key on the HW. Upon the call of this
2522 API the WLAN DAL will pack and send a Set BSS Key request
2523 message to the lower RIVA sub-system if DAL is in state
2524 STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_PostAssocReq must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiSetBSSKeyRspCb: callback for passing back the
2535 response of the set BSS Key operation received from the
2536 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 callback
2540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 @see WDI_PostAssocReq
2542 @return Result of the function call
2543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002545WDI_SetBSSKeyReq
2546(
2547 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2548 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2549 void* pUserData
2550)
2551{
2552 WDI_EventInfoType wdiEventData;
2553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2554
2555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 ------------------------------------------------------------------------*/
2558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2559 {
2560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2561 "WDI API call before module is initialized - Fail request");
2562
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 }
2565
2566 /*------------------------------------------------------------------------
2567 Fill in Event data and post to the Main FSM
2568 ------------------------------------------------------------------------*/
2569 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2571 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2572 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wdiEventData.pUserData = pUserData;
2574
2575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2576
2577}/*WDI_SetBSSKeyReq*/
2578
2579/**
2580 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2581 uninstall a BSS key from HW. Upon the call of this API the
2582 WLAN DAL will pack and send a HAL Remove BSS Key request
2583 message to the lower RIVA sub-system if DAL is in state
2584 STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_SetBSSKeyReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiRemoveBSSKeyRspCb: callback for passing back the
2595 response of the remove BSS key operation received from
2596 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_SetBSSKeyReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_RemoveBSSKeyReq
2606(
2607 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2608 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2632 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_RemoveBSSKeyReq*/
2638
2639
2640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 ready to install a STA(ast) encryption key in HW. Upon
2643 the call of this API the WLAN DAL will pack and send a
2644 HAL Set STA Key request message to the lower RIVA
2645 sub-system if DAL is in state STARTED.
2646
2647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002649
2650 WDI_PostAssocReq must have been called.
2651
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 wdiSetSTAKeyRspCb: callback for passing back the
2656 response of the set STA key operation received from the
2657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 callback
2661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 @see WDI_PostAssocReq
2663 @return Result of the function call
2664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002666WDI_SetSTAKeyReq
2667(
2668 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2669 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2670 void* pUserData
2671)
2672{
2673 WDI_EventInfoType wdiEventData;
2674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2675
2676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 ------------------------------------------------------------------------*/
2679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2680 {
2681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2682 "WDI API call before module is initialized - Fail request");
2683
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 }
2686
2687 /*------------------------------------------------------------------------
2688 Fill in Event data and post to the Main FSM
2689 ------------------------------------------------------------------------*/
2690 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2692 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2693 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 wdiEventData.pUserData = pUserData;
2695
2696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2697
2698}/*WDI_SetSTAKeyReq*/
2699
2700
2701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 wants to uninstall a previously set STA key in HW. Upon
2704 the call of this API the WLAN DAL will pack and send a
2705 HAL Remove STA Key request message to the lower RIVA
2706 sub-system if DAL is in state STARTED.
2707
2708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002710
2711 WDI_SetSTAKeyReq must have been called.
2712
Jeff Johnsone7245742012-09-05 17:12:55 -07002713 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 wdiRemoveSTAKeyRspCb: callback for passing back the
2717 response of the remove STA key operation received from
2718 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 callback
2722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 @see WDI_SetSTAKeyReq
2724 @return Result of the function call
2725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002727WDI_RemoveSTAKeyReq
2728(
2729 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2730 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2731 void* pUserData
2732)
2733{
2734 WDI_EventInfoType wdiEventData;
2735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2736
2737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 ------------------------------------------------------------------------*/
2740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2741 {
2742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2743 "WDI API call before module is initialized - Fail request");
2744
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 }
2747
2748 /*------------------------------------------------------------------------
2749 Fill in Event data and post to the Main FSM
2750 ------------------------------------------------------------------------*/
2751 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2753 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2754 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 wdiEventData.pUserData = pUserData;
2756
2757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2758
2759}/*WDI_RemoveSTAKeyReq*/
2760
2761
2762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 wants to install a STA Bcast encryption key on the HW.
2765 Upon the call of this API the WLAN DAL will pack and
2766 send a HAL Start request message to the lower RIVA
2767 sub-system if DAL is in state STARTED.
2768
2769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002771
2772 WDI_PostAssocReq must have been called.
2773
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 wdiSetSTABcastKeyRspCb: callback for passing back the
2778 response of the set BSS Key operation received from the
2779 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002780
Jeff Johnson295189b2012-06-20 16:38:30 -07002781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002782 callback
2783
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 @see WDI_PostAssocReq
2785 @return Result of the function call
2786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002788WDI_SetSTABcastKeyReq
2789(
2790 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2791 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2792 void* pUserData
2793)
2794
2795{
2796 WDI_EventInfoType wdiEventData;
2797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2798
2799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 ------------------------------------------------------------------------*/
2802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2803 {
2804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2805 "WDI API call before module is initialized - Fail request");
2806
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 }
2809
2810 /*------------------------------------------------------------------------
2811 Fill in Event data and post to the Main FSM
2812 ------------------------------------------------------------------------*/
2813 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2815 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2816 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 wdiEventData.pUserData = pUserData;
2818
2819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2820
2821}/*WDI_SetSTABcastKeyReq*/
2822
2823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 MAC wants to uninstall a STA Bcast key from HW. Upon the
2826 call of this API the WLAN DAL will pack and send a HAL
2827 Remove STA Bcast Key request message to the lower RIVA
2828 sub-system if DAL is in state STARTED.
2829
2830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002832
2833 WDI_SetSTABcastKeyReq must have been called.
2834
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 parameters as specified by the Device
2837 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2840 response of the remove STA Bcast key operation received
2841 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_SetSTABcastKeyReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_RemoveSTABcastKeyReq
2851(
2852 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2853 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2877 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881
2882}/*WDI_RemoveSTABcastKeyReq*/
2883
2884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 MAC wants to set Max Tx Power to HW. Upon the
2887 call of this API the WLAN DAL will pack and send a HAL
2888 Remove STA Bcast Key request message to the lower RIVA
2889 sub-system if DAL is in state STARTED.
2890
2891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002893
2894 WDI_SetSTABcastKeyReq must have been called.
2895
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 parameters as specified by the Device
2898 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2901 response of the remove STA Bcast key operation received
2902 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002903
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 callback
2906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 @see WDI_SetMaxTxPowerReq
2908 @return Result of the function call
2909*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002911WDI_SetMaxTxPowerReq
2912(
2913 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2914 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2915 void* pUserData
2916)
2917{
2918 WDI_EventInfoType wdiEventData;
2919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2920
2921 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 ------------------------------------------------------------------------*/
2924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2925 {
2926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2927 "WDI API call before module is initialized - Fail request");
2928
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 }
2931
2932 /*------------------------------------------------------------------------
2933 Fill in Event data and post to the Main FSM
2934 ------------------------------------------------------------------------*/
2935 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2937 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2938 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 wdiEventData.pUserData = pUserData;
2940
2941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2942}
2943
schangd82195a2013-03-13 18:41:24 -07002944/**
Arif Hussainfc753992013-08-09 15:09:58 -07002945 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2946 MAC wants to set Max Tx Power to HW for specific band.
2947
2948 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2949
2950 wdiReqStatusCb: callback for passing back the
2951 response msg from the device
2952
2953 pUserData: user data will be passed back with the
2954 callback
2955
2956 @see WDI_SetMaxTxPowerPerBandReq
2957 @return Result of the function call
2958*/
2959WDI_Status
2960WDI_SetMaxTxPowerPerBandReq
2961(
2962 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2963 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2964 void* pUserData
2965)
2966{
2967 WDI_EventInfoType wdiEventData;
2968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2969
2970 /*------------------------------------------------------------------------
2971 Sanity Check
2972 ------------------------------------------------------------------------*/
2973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2974 {
2975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2976 "WDI API call before module is initialized - Fail request");
2977
2978 return WDI_STATUS_E_NOT_ALLOWED;
2979 }
2980
2981 /*------------------------------------------------------------------------
2982 Fill in Event data and post to the Main FSM
2983 ------------------------------------------------------------------------*/
2984 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2985 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2986 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2987 wdiEventData.pCBfnc = wdiReqStatusCb;
2988 wdiEventData.pUserData = pUserData;
2989
2990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2991}
2992
2993/**
schangd82195a2013-03-13 18:41:24 -07002994 @brief WDI_SetTxPowerReq will be called when the upper
2995 MAC wants to set Tx Power to HW.
2996 In state BUSY this request will be queued. Request won't
2997 be allowed in any other state.
2998
2999
3000 @param pwdiSetTxPowerParams: set TS Power parameters
3001 BSSID and target TX Power with dbm included
3002
3003 wdiReqStatusCb: callback for passing back the response
3004
3005 pUserData: user data will be passed back with the
3006 callback
3007
3008 @return Result of the function call
3009*/
3010WDI_Status
3011WDI_SetTxPowerReq
3012(
3013 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3014 WDA_SetTxPowerRspCb wdiReqStatusCb,
3015 void* pUserData
3016)
3017{
3018 WDI_EventInfoType wdiEventData;
3019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3020
3021 /*------------------------------------------------------------------------
3022 Sanity Check
3023 ------------------------------------------------------------------------*/
3024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3025 {
3026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3027 "WDI API call before module is initialized - Fail request");
3028
3029 return WDI_STATUS_E_NOT_ALLOWED;
3030 }
3031
3032 /*------------------------------------------------------------------------
3033 Fill in Event data and post to the Main FSM
3034 ------------------------------------------------------------------------*/
3035 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3036 wdiEventData.pEventData = pwdiSetTxPowerParams;
3037 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3038 wdiEventData.pCBfnc = wdiReqStatusCb;
3039 wdiEventData.pUserData = pUserData;
3040
3041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3042}
3043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044#ifdef FEATURE_WLAN_CCX
3045WDI_Status
3046WDI_TSMStatsReq
3047(
3048 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3049 WDI_TsmRspCb wdiReqStatusCb,
3050 void* pUserData
3051)
3052{
3053 WDI_EventInfoType wdiEventData;
3054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003055 /*------------------------------------------------------------------------
3056 Sanity Check
3057 ------------------------------------------------------------------------*/
3058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3059 {
3060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3061 "WDI API call before module is initialized - Fail request");
3062
3063 return WDI_STATUS_E_NOT_ALLOWED;
3064 }
3065
3066 /*------------------------------------------------------------------------
3067 Fill in Event data and post to the Main FSM
3068 ------------------------------------------------------------------------*/
3069 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3070 wdiEventData.pEventData = pwdiTsmReqParams;
3071 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3072 wdiEventData.pCBfnc = wdiReqStatusCb;
3073 wdiEventData.pUserData = pUserData;
3074
3075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3076
3077}
3078#endif
3079
3080/*========================================================================
3081
3082 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003083
Jeff Johnson295189b2012-06-20 16:38:30 -07003084==========================================================================*/
3085
3086/**
3087 @brief WDI_AddTSReq will be called when the upper MAC to inform
3088 the device of a successful add TSpec negotiation. HW
3089 needs to receive the TSpec Info from the UMAC in order
3090 to configure properly the QoS data traffic. Upon the
3091 call of this API the WLAN DAL will pack and send a HAL
3092 Add TS request message to the lower RIVA sub-system if
3093 DAL is in state STARTED.
3094
3095 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003097
3098 WDI_PostAssocReq must have been called.
3099
3100 @param wdiAddTsReqParams: the add TS parameters as specified by
3101 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 wdiAddTsRspCb: callback for passing back the response of
3104 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 callback
3108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 @see WDI_PostAssocReq
3110 @return Result of the function call
3111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003113WDI_AddTSReq
3114(
3115 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3116 WDI_AddTsRspCb wdiAddTsRspCb,
3117 void* pUserData
3118)
3119{
3120 WDI_EventInfoType wdiEventData;
3121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3122
3123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003125 ------------------------------------------------------------------------*/
3126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3127 {
3128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3129 "WDI API call before module is initialized - Fail request");
3130
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 }
3133
3134 /*------------------------------------------------------------------------
3135 Fill in Event data and post to the Main FSM
3136 ------------------------------------------------------------------------*/
3137 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 wdiEventData.pEventData = pwdiAddTsReqParams;
3139 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3140 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 wdiEventData.pUserData = pUserData;
3142
3143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3144
3145}/*WDI_AddTSReq*/
3146
3147
3148
3149/**
3150 @brief WDI_DelTSReq will be called when the upper MAC has ended
3151 admission on a specific AC. This is to inform HW that
3152 QoS traffic parameters must be rest. Upon the call of
3153 this API the WLAN DAL will pack and send a HAL Del TS
3154 request message to the lower RIVA sub-system if DAL is
3155 in state STARTED.
3156
3157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003159
3160 WDI_AddTSReq must have been called.
3161
3162 @param wdiDelTsReqParams: the del TS parameters as specified by
3163 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003164
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiDelTsRspCb: callback for passing back the response of
3166 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 callback
3170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 @see WDI_AddTSReq
3172 @return Result of the function call
3173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003175WDI_DelTSReq
3176(
3177 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3178 WDI_DelTsRspCb wdiDelTsRspCb,
3179 void* pUserData
3180)
3181{
3182 WDI_EventInfoType wdiEventData;
3183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3184
3185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 ------------------------------------------------------------------------*/
3188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3189 {
3190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3191 "WDI API call before module is initialized - Fail request");
3192
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 }
3195
3196 /*------------------------------------------------------------------------
3197 Fill in Event data and post to the Main FSM
3198 ------------------------------------------------------------------------*/
3199 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 wdiEventData.pEventData = pwdiDelTsReqParams;
3201 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3202 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 wdiEventData.pUserData = pUserData;
3204
3205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3206
3207}/*WDI_DelTSReq*/
3208
3209
3210
3211/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 wishes to update the EDCA parameters used by HW for QoS
3214 data traffic. Upon the call of this API the WLAN DAL
3215 will pack and send a HAL Update EDCA Params request
3216 message to the lower RIVA sub-system if DAL is in state
3217 STARTED.
3218
3219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003221
3222 WDI_PostAssocReq must have been called.
3223
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003226
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiUpdateEDCAParamsRspCb: callback for passing back the
3228 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003229
Jeff Johnson295189b2012-06-20 16:38:30 -07003230 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003231 callback
3232
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 @see WDI_PostAssocReq
3234 @return Result of the function call
3235*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003236WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003237WDI_UpdateEDCAParams
3238(
3239 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3240 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3241 void* pUserData
3242)
3243{
3244 WDI_EventInfoType wdiEventData;
3245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3246
3247 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003248 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 ------------------------------------------------------------------------*/
3250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3251 {
3252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3253 "WDI API call before module is initialized - Fail request");
3254
Jeff Johnsone7245742012-09-05 17:12:55 -07003255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 }
3257
3258 /*------------------------------------------------------------------------
3259 Fill in Event data and post to the Main FSM
3260 ------------------------------------------------------------------------*/
3261 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003262 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3263 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3264 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 wdiEventData.pUserData = pUserData;
3266
3267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3268
3269}/*WDI_UpdateEDCAParams*/
3270
3271
3272/**
3273 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3274 successfully a BA session and needs to notify the HW for
3275 the appropriate settings to take place. Upon the call of
3276 this API the WLAN DAL will pack and send a HAL Add BA
3277 request message to the lower RIVA sub-system if DAL is
3278 in state STARTED.
3279
3280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
3283 WDI_PostAssocReq must have been called.
3284
3285 @param wdiAddBAReqParams: the add BA parameters as specified by
3286 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiAddBARspCb: callback for passing back the response of
3289 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 callback
3293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 @see WDI_PostAssocReq
3295 @return Result of the function call
3296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003298WDI_AddBASessionReq
3299(
3300 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3301 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3307
3308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 ------------------------------------------------------------------------*/
3311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3312 {
3313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3314 "WDI API call before module is initialized - Fail request");
3315
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 }
3318
3319 /*------------------------------------------------------------------------
3320 Fill in Event data and post to the Main FSM
3321 ------------------------------------------------------------------------*/
3322 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3324 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3325 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 wdiEventData.pUserData = pUserData;
3327
3328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3329
3330}/*WDI_AddBASessionReq*/
3331
3332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003333 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 inform HW that it has deleted a previously created BA
3335 session. Upon the call of this API the WLAN DAL will
3336 pack and send a HAL Del BA request message to the lower
3337 RIVA sub-system if DAL is in state STARTED.
3338
3339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003341
3342 WDI_AddBAReq must have been called.
3343
3344 @param wdiDelBAReqParams: the del BA parameters as specified by
3345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003346
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiDelBARspCb: callback for passing back the response of
3348 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003349
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 callback
3352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 @see WDI_AddBAReq
3354 @return Result of the function call
3355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003357WDI_DelBAReq
3358(
3359 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3360 WDI_DelBARspCb wdiDelBARspCb,
3361 void* pUserData
3362)
3363{
3364 WDI_EventInfoType wdiEventData;
3365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3366
3367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 ------------------------------------------------------------------------*/
3370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3371 {
3372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3373 "WDI API call before module is initialized - Fail request");
3374
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 }
3377
3378 /*------------------------------------------------------------------------
3379 Fill in Event data and post to the Main FSM
3380 ------------------------------------------------------------------------*/
3381 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003382 wdiEventData.pEventData = pwdiDelBAReqParams;
3383 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3384 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 wdiEventData.pUserData = pUserData;
3386
3387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3388
3389}/*WDI_DelBAReq*/
3390
Jeff Johnsone7245742012-09-05 17:12:55 -07003391/*========================================================================
3392
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003394
Jeff Johnson295189b2012-06-20 16:38:30 -07003395==========================================================================*/
3396
3397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 wants to set the power save related configurations of
3400 the WLAN Device. Upon the call of this API the WLAN DAL
3401 will pack and send a HAL Update CFG request message to
3402 the lower RIVA sub-system if DAL is in state STARTED.
3403
3404 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003406
3407 WDI_Start must have been called.
3408
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 wdiSetPwrSaveCfgCb: callback for passing back the
3413 response of the set power save cfg operation received
3414 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 callback
3418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 @return Result of the function call
3421*/
3422WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003423WDI_SetPwrSaveCfgReq
3424(
3425 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3426 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 wdiEventData.pEventData = pwdiPowerSaveCfg;
3449 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3450 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454
3455}/*WDI_SetPwrSaveCfgReq*/
3456
3457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 request the device to get into IMPS power state. Upon
3460 the call of this API the WLAN DAL will send a HAL Enter
3461 IMPS request message to the lower RIVA sub-system if DAL
3462 is in state STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
3468 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 response of the Enter IMPS operation received from the
3470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 callback
3474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 @see WDI_Start
3476 @return Result of the function call
3477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003479WDI_EnterImpsReq
3480(
3481 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3482 void* pUserData
3483)
3484{
3485 WDI_EventInfoType wdiEventData;
3486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3487
3488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 ------------------------------------------------------------------------*/
3491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3492 {
3493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3494 "WDI API call before module is initialized - Fail request");
3495
Jeff Johnsone7245742012-09-05 17:12:55 -07003496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 }
3498
3499 /*------------------------------------------------------------------------
3500 Fill in Event data and post to the Main FSM
3501 ------------------------------------------------------------------------*/
3502 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 wdiEventData.pEventData = NULL;
3504 wdiEventData.uEventDataSize = 0;
3505 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 wdiEventData.pUserData = pUserData;
3507
3508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3509
3510}/*WDI_EnterImpsReq*/
3511
3512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003513 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003514 request the device to get out of IMPS power state. Upon
3515 the call of this API the WLAN DAL will send a HAL Exit
3516 IMPS request message to the lower RIVA sub-system if DAL
3517 is in state STARTED.
3518
3519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003521
Jeff Johnson295189b2012-06-20 16:38:30 -07003522
Jeff Johnsone7245742012-09-05 17:12:55 -07003523
3524 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003528 callback
3529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 @see WDI_Start
3531 @return Result of the function call
3532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003534WDI_ExitImpsReq
3535(
3536 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3537 void* pUserData
3538)
3539{
3540 WDI_EventInfoType wdiEventData;
3541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3542
3543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003544 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 ------------------------------------------------------------------------*/
3546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3547 {
3548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3549 "WDI API call before module is initialized - Fail request");
3550
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 }
3553
3554 /*------------------------------------------------------------------------
3555 Fill in Event data and post to the Main FSM
3556 ------------------------------------------------------------------------*/
3557 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 wdiEventData.pEventData = NULL;
3559 wdiEventData.uEventDataSize = 0;
3560 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 wdiEventData.pUserData = pUserData;
3562
3563 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3564
3565}/*WDI_ExitImpsReq*/
3566
3567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 request the device to get into BMPS power state. Upon
3570 the call of this API the WLAN DAL will pack and send a
3571 HAL Enter BMPS request message to the lower RIVA
3572 sub-system if DAL is in state STARTED.
3573
3574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003576
3577 WDI_PostAssocReq must have been called.
3578
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wdiEnterBmpsRspCb: callback for passing back the
3583 response of the Enter BMPS operation received from the
3584 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 callback
3588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 @see WDI_PostAssocReq
3590 @return Result of the function call
3591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003593WDI_EnterBmpsReq
3594(
3595 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3596 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3597 void* pUserData
3598)
3599{
3600 WDI_EventInfoType wdiEventData;
3601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3602
3603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 ------------------------------------------------------------------------*/
3606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3607 {
3608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3609 "WDI API call before module is initialized - Fail request");
3610
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 }
3613
3614 /*------------------------------------------------------------------------
3615 Fill in Event data and post to the Main FSM
3616 ------------------------------------------------------------------------*/
3617 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3619 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3620 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 wdiEventData.pUserData = pUserData;
3622
3623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3624
3625}/*WDI_EnterBmpsReq*/
3626
3627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 request the device to get out of BMPS power state. Upon
3630 the call of this API the WLAN DAL will pack and send a
3631 HAL Exit BMPS request message to the lower RIVA
3632 sub-system if DAL is in state STARTED.
3633
3634 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003636
3637 WDI_PostAssocReq must have been called.
3638
Jeff Johnsone7245742012-09-05 17:12:55 -07003639 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003641
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 wdiExitBmpsRspCb: callback for passing back the response
3643 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 callback
3647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 @see WDI_PostAssocReq
3649 @return Result of the function call
3650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003652WDI_ExitBmpsReq
3653(
3654 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3655 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3656 void* pUserData
3657)
3658{
3659 WDI_EventInfoType wdiEventData;
3660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3661
3662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 ------------------------------------------------------------------------*/
3665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3666 {
3667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3668 "WDI API call before module is initialized - Fail request");
3669
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 }
3672
3673 /*------------------------------------------------------------------------
3674 Fill in Event data and post to the Main FSM
3675 ------------------------------------------------------------------------*/
3676 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3678 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3679 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 wdiEventData.pUserData = pUserData;
3681
3682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3683
3684}/*WDI_ExitBmpsReq*/
3685
3686/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 request the device to get into UAPSD power state. Upon
3689 the call of this API the WLAN DAL will pack and send a
3690 HAL Enter UAPSD request message to the lower RIVA
3691 sub-system if DAL is in state STARTED.
3692
3693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003695
3696 WDI_PostAssocReq must have been called.
3697 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003698
3699 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003701
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiEnterUapsdRspCb: callback for passing back the
3703 response of the Enter UAPSD operation received from the
3704 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 callback
3708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3710 @return Result of the function call
3711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003713WDI_EnterUapsdReq
3714(
3715 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3716 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3717 void* pUserData
3718)
3719{
3720 WDI_EventInfoType wdiEventData;
3721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3722
3723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 ------------------------------------------------------------------------*/
3726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3727 {
3728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3729 "WDI API call before module is initialized - Fail request");
3730
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 }
3733
3734 /*------------------------------------------------------------------------
3735 Fill in Event data and post to the Main FSM
3736 ------------------------------------------------------------------------*/
3737 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3739 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3740 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 wdiEventData.pUserData = pUserData;
3742
3743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3744
3745}/*WDI_EnterUapsdReq*/
3746
3747/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 request the device to get out of UAPSD power state. Upon
3750 the call of this API the WLAN DAL will send a HAL Exit
3751 UAPSD request message to the lower RIVA sub-system if
3752 DAL is in state STARTED.
3753
3754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003756
3757 WDI_PostAssocReq must have been called.
3758
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 response of the Exit UAPSD operation received from the
3761 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 callback
3765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 @see WDI_PostAssocReq
3767 @return Result of the function call
3768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003770WDI_ExitUapsdReq
3771(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003772 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3774 void* pUserData
3775)
3776{
3777 WDI_EventInfoType wdiEventData;
3778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3779
3780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 ------------------------------------------------------------------------*/
3783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3784 {
3785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3786 "WDI API call before module is initialized - Fail request");
3787
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 }
3790
3791 /*------------------------------------------------------------------------
3792 Fill in Event data and post to the Main FSM
3793 ------------------------------------------------------------------------*/
3794 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003795 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3796 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 wdiEventData.pUserData = pUserData;
3799
3800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3801
3802}/*WDI_ExitUapsdReq*/
3803
3804/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 MAC wants to set the UAPSD related configurations
3807 of an associated STA (while acting as an AP) to the WLAN
3808 Device. Upon the call of this API the WLAN DAL will pack
3809 and send a HAL Update UAPSD params request message to
3810 the lower RIVA sub-system if DAL is in state STARTED.
3811
3812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003814
3815 WDI_ConfigBSSReq must have been called.
3816
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003819
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 wdiUpdateUapsdParamsCb: callback for passing back the
3821 response of the update UAPSD params operation received
3822 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003823
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003825 callback
3826
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 @see WDI_ConfigBSSReq
3828 @return Result of the function call
3829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003831WDI_UpdateUapsdParamsReq
3832(
3833 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3834 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3835 void* pUserData
3836)
3837{
3838 WDI_EventInfoType wdiEventData;
3839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3840
3841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 ------------------------------------------------------------------------*/
3844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3845 {
3846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3847 "WDI API call before module is initialized - Fail request");
3848
Jeff Johnsone7245742012-09-05 17:12:55 -07003849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 }
3851
3852 /*------------------------------------------------------------------------
3853 Fill in Event data and post to the Main FSM
3854 ------------------------------------------------------------------------*/
3855 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003857 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 wdiEventData.pUserData = pUserData;
3860
3861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3862
3863}/*WDI_UpdateUapsdParamsReq*/
3864
3865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 MAC wants to set the UAPSD related configurations before
3868 requesting for enter UAPSD power state to the WLAN
3869 Device. Upon the call of this API the WLAN DAL will pack
3870 and send a HAL Set UAPSD params request message to
3871 the lower RIVA sub-system if DAL is in state STARTED.
3872
3873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003875
3876 WDI_PostAssocReq must have been called.
3877
3878 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3879 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003880
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 wdiSetUapsdAcParamsCb: callback for passing back the
3882 response of the set UAPSD params operation received from
3883 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 callback
3887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 @see WDI_PostAssocReq
3889 @return Result of the function call
3890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003892WDI_SetUapsdAcParamsReq
3893(
3894 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3895 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3896 void* pUserData
3897)
3898{
3899 WDI_EventInfoType wdiEventData;
3900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3901
3902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 ------------------------------------------------------------------------*/
3905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3906 {
3907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3908 "WDI API call before module is initialized - Fail request");
3909
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 }
3912
3913 /*------------------------------------------------------------------------
3914 Fill in Event data and post to the Main FSM
3915 ------------------------------------------------------------------------*/
3916 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 wdiEventData.pEventData = pwdiUapsdInfo;
3918 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3919 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 wdiEventData.pUserData = pUserData;
3921
3922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3923
3924}/*WDI_SetUapsdAcParamsReq*/
3925
3926/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003927 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 MAC wants to set/reset the RXP filters for received pkts
3929 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3930 and send a HAL configure RXP filter request message to
3931 the lower RIVA sub-system.
3932
3933 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003934 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003935
Jeff Johnsone7245742012-09-05 17:12:55 -07003936
3937 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 filter as specified by the Device
3939 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003940
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 wdiConfigureRxpFilterCb: callback for passing back the
3942 response of the configure RXP filter operation received
3943 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 callback
3947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 @return Result of the function call
3949*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003950WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003951WDI_ConfigureRxpFilterReq
3952(
3953 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3954 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3955 void* pUserData
3956)
3957{
3958 WDI_EventInfoType wdiEventData;
3959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3960
3961 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003962 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 ------------------------------------------------------------------------*/
3964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3965 {
3966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3967 "WDI API call before module is initialized - Fail request");
3968
Jeff Johnsone7245742012-09-05 17:12:55 -07003969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003970 }
3971
3972 /*------------------------------------------------------------------------
3973 Fill in Event data and post to the Main FSM
3974 ------------------------------------------------------------------------*/
3975 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3977 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3978 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 wdiEventData.pUserData = pUserData;
3980
3981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3982}/*WDI_ConfigureRxpFilterReq*/
3983
3984/**
3985 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3986 wants to set the beacon filters while in power save.
3987 Upon the call of this API the WLAN DAL will pack and
3988 send a Beacon filter request message to the
3989 lower RIVA sub-system.
3990
3991 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003993
Jeff Johnsone7245742012-09-05 17:12:55 -07003994
3995 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 filter as specified by the Device
3997 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 wdiBeaconFilterCb: callback for passing back the
4000 response of the set beacon filter operation received
4001 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 callback
4005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 @return Result of the function call
4007*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004009WDI_SetBeaconFilterReq
4010(
4011 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4012 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4013 void* pUserData
4014)
4015{
4016 WDI_EventInfoType wdiEventData;
4017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4018
4019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 ------------------------------------------------------------------------*/
4022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4023 {
4024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4025 "WDI API call before module is initialized - Fail request");
4026
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 }
4029
4030 /*------------------------------------------------------------------------
4031 Fill in Event data and post to the Main FSM
4032 ------------------------------------------------------------------------*/
4033 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004035 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 wdiEventData.pUserData = pUserData;
4038
4039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4040}/*WDI_SetBeaconFilterReq*/
4041
4042/**
4043 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4044 wants to remove the beacon filter for particular IE
4045 while in power save. Upon the call of this API the WLAN
4046 DAL will pack and send a remove Beacon filter request
4047 message to the lower RIVA sub-system.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052
4053 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 filter as specified by the Device
4055 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiBeaconFilterCb: callback for passing back the
4058 response of the remove beacon filter operation received
4059 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @return Result of the function call
4065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004067WDI_RemBeaconFilterReq
4068(
4069 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4070 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4071 void* pUserData
4072)
4073{
4074 WDI_EventInfoType wdiEventData;
4075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4076
4077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 ------------------------------------------------------------------------*/
4080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4081 {
4082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4083 "WDI API call before module is initialized - Fail request");
4084
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 }
4087
4088 /*------------------------------------------------------------------------
4089 Fill in Event data and post to the Main FSM
4090 ------------------------------------------------------------------------*/
4091 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004093 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 wdiEventData.pUserData = pUserData;
4096
4097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4098}/*WDI_RemBeaconFilterReq*/
4099
4100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 MAC wants to set the RSSI thresholds related
4103 configurations while in power save. Upon the call of
4104 this API the WLAN DAL will pack and send a HAL Set RSSI
4105 thresholds request message to the lower RIVA
4106 sub-system if DAL is in state STARTED.
4107
4108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004110
4111 WDI_PostAssocReq must have been called.
4112
4113 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiSetUapsdAcParamsCb: callback for passing back the
4117 response of the set UAPSD params operation received from
4118 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_PostAssocReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_SetRSSIThresholdsReq
4128(
4129 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4130 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004153 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158}/* WDI_SetRSSIThresholdsReq*/
4159
4160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wants to set the filter to minimize unnecessary host
4163 wakeup due to broadcast traffic while in power save.
4164 Upon the call of this API the WLAN DAL will pack and
4165 send a HAL host offload request message to the
4166 lower RIVA sub-system if DAL is in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004175
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 wdiHostOffloadCb: callback for passing back the response
4177 of the host offload operation received from the
4178 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 callback
4182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 @see WDI_PostAssocReq
4184 @return Result of the function call
4185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004187WDI_HostOffloadReq
4188(
4189 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4190 WDI_HostOffloadCb wdiHostOffloadCb,
4191 void* pUserData
4192)
4193{
4194 WDI_EventInfoType wdiEventData;
4195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4196
4197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 ------------------------------------------------------------------------*/
4200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4201 {
4202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4203 "WDI API call before module is initialized - Fail request");
4204
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 }
4207
4208 /*------------------------------------------------------------------------
4209 Fill in Event data and post to the Main FSM
4210 ------------------------------------------------------------------------*/
4211 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004213 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 wdiEventData.pUserData = pUserData;
4216
4217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4218}/*WDI_HostOffloadReq*/
4219
4220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 @brief WDI_KeepAliveReq will be called when the upper MAC
4222 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 and minimize unnecessary host wakeups due to while in power save.
4224 Upon the call of this API the WLAN DAL will pack and
4225 send a HAL Keep Alive request message to the
4226 lower RIVA sub-system if DAL is in state STARTED.
4227
4228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004230
4231 WDI_PostAssocReq must have been called.
4232
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 wdiKeepAliveCb: callback for passing back the response
4237 of the Keep Alive operation received from the
4238 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 callback
4242
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 @see WDI_PostAssocReq
4244 @return Result of the function call
4245*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004247WDI_KeepAliveReq
4248(
4249 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4250 WDI_KeepAliveCb wdiKeepAliveCb,
4251 void* pUserData
4252)
4253{
4254 WDI_EventInfoType wdiEventData;
4255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4256
4257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 ------------------------------------------------------------------------*/
4260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4261 {
4262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4263 "WDI_KeepAliveReq: WDI API call before module "
4264 "is initialized - Fail request");
4265
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 }
4268
4269 /*------------------------------------------------------------------------
4270 Fill in Event data and post to the Main FSM
4271 ------------------------------------------------------------------------*/
4272 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 wdiEventData.pEventData = pwdiKeepAliveParams;
4274 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4275 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 wdiEventData.pUserData = pUserData;
4277
4278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4279}/*WDI_KeepAliveReq*/
4280
4281/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 wants to set the Wowl Bcast ptrn to minimize unnecessary
4284 host wakeup due to broadcast traffic while in power
4285 save. Upon the call of this API the WLAN DAL will pack
4286 and send a HAL Wowl Bcast ptrn request message to the
4287 lower RIVA sub-system if DAL is in state STARTED.
4288
4289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004291
4292 WDI_PostAssocReq must have been called.
4293
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 wdiWowlAddBcPtrnCb: callback for passing back the
4298 response of the add Wowl bcast ptrn operation received
4299 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 callback
4303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 @see WDI_PostAssocReq
4305 @return Result of the function call
4306*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004307WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004308WDI_WowlAddBcPtrnReq
4309(
4310 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4311 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4312 void* pUserData
4313)
4314{
4315 WDI_EventInfoType wdiEventData;
4316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4317
4318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 ------------------------------------------------------------------------*/
4321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4322 {
4323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4324 "WDI API call before module is initialized - Fail request");
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 }
4328
4329 /*------------------------------------------------------------------------
4330 Fill in Event data and post to the Main FSM
4331 ------------------------------------------------------------------------*/
4332 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004334 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 wdiEventData.pUserData = pUserData;
4337
4338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4339}/*WDI_WowlAddBcPtrnReq*/
4340
4341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 wants to clear the Wowl Bcast ptrn. Upon the call of
4344 this API the WLAN DAL will pack and send a HAL delete
4345 Wowl Bcast ptrn request message to the lower RIVA
4346 sub-system if DAL is in state STARTED.
4347
4348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004350
4351 WDI_WowlAddBcPtrnReq must have been called.
4352
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004355
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 wdiWowlDelBcPtrnCb: callback for passing back the
4357 response of the del Wowl bcast ptrn operation received
4358 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004361 callback
4362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 @see WDI_WowlAddBcPtrnReq
4364 @return Result of the function call
4365*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004366WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004367WDI_WowlDelBcPtrnReq
4368(
4369 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4370 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4371 void* pUserData
4372)
4373{
4374 WDI_EventInfoType wdiEventData;
4375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4376
4377 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 ------------------------------------------------------------------------*/
4380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4381 {
4382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4383 "WDI API call before module is initialized - Fail request");
4384
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 }
4387
4388 /*------------------------------------------------------------------------
4389 Fill in Event data and post to the Main FSM
4390 ------------------------------------------------------------------------*/
4391 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004393 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 wdiEventData.pUserData = pUserData;
4396
4397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4398}/*WDI_WowlDelBcPtrnReq*/
4399
4400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 wants to enter the Wowl state to minimize unnecessary
4403 host wakeup while in power save. Upon the call of this
4404 API the WLAN DAL will pack and send a HAL Wowl enter
4405 request message to the lower RIVA sub-system if DAL is
4406 in state STARTED.
4407
4408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004410
4411 WDI_PostAssocReq must have been called.
4412
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wdiWowlEnterReqCb: callback for passing back the
4417 response of the enter Wowl operation received from the
4418 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 callback
4422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 @see WDI_PostAssocReq
4424 @return Result of the function call
4425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004427WDI_WowlEnterReq
4428(
4429 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4430 WDI_WowlEnterReqCb wdiWowlEnterCb,
4431 void* pUserData
4432)
4433{
4434 WDI_EventInfoType wdiEventData;
4435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4436
4437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 ------------------------------------------------------------------------*/
4440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4441 {
4442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4443 "WDI API call before module is initialized - Fail request");
4444
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 }
4447
4448 /*------------------------------------------------------------------------
4449 Fill in Event data and post to the Main FSM
4450 ------------------------------------------------------------------------*/
4451 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004453 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 wdiEventData.pUserData = pUserData;
4456
4457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4458}/*WDI_WowlEnterReq*/
4459
4460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 wants to exit the Wowl state. Upon the call of this API
4463 the WLAN DAL will pack and send a HAL Wowl exit request
4464 message to the lower RIVA sub-system if DAL is in state
4465 STARTED.
4466
4467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004469
4470 WDI_WowlEnterReq must have been called.
4471
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004474
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 wdiWowlExitReqCb: callback for passing back the response
4476 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004477
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 callback
4480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 @see WDI_WowlEnterReq
4482 @return Result of the function call
4483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004485WDI_WowlExitReq
4486(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004487 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 WDI_WowlExitReqCb wdiWowlExitCb,
4489 void* pUserData
4490)
4491{
4492 WDI_EventInfoType wdiEventData;
4493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4494
4495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 ------------------------------------------------------------------------*/
4498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4499 {
4500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4501 "WDI API call before module is initialized - Fail request");
4502
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 }
4505
4506 /*------------------------------------------------------------------------
4507 Fill in Event data and post to the Main FSM
4508 ------------------------------------------------------------------------*/
4509 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004510 wdiEventData.pEventData = pwdiWowlExitParams;
4511 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 wdiEventData.pUserData = pUserData;
4514
4515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4516}/*WDI_WowlExitReq*/
4517
4518/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004519 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 the upper MAC wants to dynamically adjusts the listen
4521 interval based on the WLAN/MSM activity. Upon the call
4522 of this API the WLAN DAL will pack and send a HAL
4523 configure Apps Cpu Wakeup State request message to the
4524 lower RIVA sub-system.
4525
4526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004528
Jeff Johnsone7245742012-09-05 17:12:55 -07004529
4530 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 Apps Cpu Wakeup State as specified by the
4532 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004533
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4535 back the response of the configure Apps Cpu Wakeup State
4536 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 callback
4540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 @return Result of the function call
4542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004544WDI_ConfigureAppsCpuWakeupStateReq
4545(
4546 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4547 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4548 void* pUserData
4549)
4550{
4551 WDI_EventInfoType wdiEventData;
4552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4553
4554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 ------------------------------------------------------------------------*/
4557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4558 {
4559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4560 "WDI API call before module is initialized - Fail request");
4561
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 }
4564
4565 /*------------------------------------------------------------------------
4566 Fill in Event data and post to the Main FSM
4567 ------------------------------------------------------------------------*/
4568 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4570 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4571 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004572 wdiEventData.pUserData = pUserData;
4573
4574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4575}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 to to perform a flush operation on a given AC. Upon the
4579 call of this API the WLAN DAL will pack and send a HAL
4580 Flush AC request message to the lower RIVA sub-system if
4581 DAL is in state STARTED.
4582
4583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004585
4586 WDI_AddBAReq must have been called.
4587
Jeff Johnsone7245742012-09-05 17:12:55 -07004588 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004590
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiFlushAcRspCb: callback for passing back the response
4592 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004593
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 callback
4596
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 @see WDI_AddBAReq
4598 @return Result of the function call
4599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004601WDI_FlushAcReq
4602(
4603 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4604 WDI_FlushAcRspCb wdiFlushAcRspCb,
4605 void* pUserData
4606)
4607{
4608 WDI_EventInfoType wdiEventData;
4609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4610
4611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 ------------------------------------------------------------------------*/
4614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4615 {
4616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4617 "WDI API call before module is initialized - Fail request");
4618
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 }
4621
4622 /*------------------------------------------------------------------------
4623 Fill in Event data and post to the Main FSM
4624 ------------------------------------------------------------------------*/
4625 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 wdiEventData.pEventData = pwdiFlushAcReqParams;
4627 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4628 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wdiEventData.pUserData = pUserData;
4630
4631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4632
4633}/*WDI_FlushAcReq*/
4634
4635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 wants to notify the lower mac on a BT AMP event. This is
4638 to inform BTC-SLM that some BT AMP event occurred. Upon
4639 the call of this API the WLAN DAL will pack and send a
4640 HAL BT AMP event request message to the lower RIVA
4641 sub-system if DAL is in state STARTED.
4642
4643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004645
Jeff Johnsone7245742012-09-05 17:12:55 -07004646
4647 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004648 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004649
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 wdiBtAmpEventRspCb: callback for passing back the
4651 response of the BT AMP event operation received from the
4652 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004653
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 callback
4656
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 @return Result of the function call
4658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004660WDI_BtAmpEventReq
4661(
4662 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4663 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4664 void* pUserData
4665)
4666{
4667 WDI_EventInfoType wdiEventData;
4668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4669
4670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 ------------------------------------------------------------------------*/
4673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4674 {
4675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4676 "WDI API call before module is initialized - Fail request");
4677
Jeff Johnsone7245742012-09-05 17:12:55 -07004678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 }
4680
4681 /*------------------------------------------------------------------------
4682 Fill in Event data and post to the Main FSM
4683 ------------------------------------------------------------------------*/
4684 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004685 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4686 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4687 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 wdiEventData.pUserData = pUserData;
4689
4690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4691
4692}/*WDI_BtAmpEventReq*/
4693
Jeff Johnsone7245742012-09-05 17:12:55 -07004694#ifdef FEATURE_OEM_DATA_SUPPORT
4695/**
4696 @brief WDI_Start Oem Data Req will be called when the upper MAC
4697 wants to notify the lower mac on a oem data Req event.Upon
4698 the call of this API the WLAN DAL will pack and send a
4699 HAL OEM Data Req event request message to the lower RIVA
4700 sub-system if DAL is in state STARTED.
4701
4702 In state BUSY this request will be queued. Request won't
4703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004704
4705
Jeff Johnsone7245742012-09-05 17:12:55 -07004706
4707 @param pwdiOemDataReqParams: the Oem Data Req as
4708 specified by the Device Interface
4709
4710 wdiStartOemDataRspCb: callback for passing back the
4711 response of the Oem Data Req received from the
4712 device
4713
4714 pUserData: user data will be passed back with the
4715 callback
4716
4717 @return Result of the function call
4718*/
4719WDI_Status
4720WDI_StartOemDataReq
4721(
4722 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4723 WDI_oemDataRspCb wdiOemDataRspCb,
4724 void* pUserData
4725)
4726{
4727 WDI_EventInfoType wdiEventData;
4728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4729
4730 /*------------------------------------------------------------------------
4731 Sanity Check
4732 ------------------------------------------------------------------------*/
4733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4734 {
4735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4736 "WDI API call before module is initialized - Fail request");
4737
4738 return WDI_STATUS_E_NOT_ALLOWED;
4739 }
4740
4741 /*------------------------------------------------------------------------
4742 Fill in Event data and post to the Main FSM
4743 ------------------------------------------------------------------------*/
4744 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4745 wdiEventData.pEventData = pwdiOemDataReqParams;
4746 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4747 wdiEventData.pCBfnc = wdiOemDataRspCb;
4748 wdiEventData.pUserData = pUserData;
4749
4750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4751
4752
4753}
4754
4755#endif
4756
4757
4758/*========================================================================
4759
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762==========================================================================*/
4763/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 the WLAN HW to change the current channel of operation.
4766 Upon the call of this API the WLAN DAL will pack and
4767 send a HAL Start request message to the lower RIVA
4768 sub-system if DAL is in state STARTED.
4769
4770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004772
4773 WDI_Start must have been called.
4774
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 wdiSwitchChRspCb: callback for passing back the response
4779 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 callback
4783
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 @see WDI_Start
4785 @return Result of the function call
4786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004788WDI_SwitchChReq
4789(
4790 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4791 WDI_SwitchChRspCb wdiSwitchChRspCb,
4792 void* pUserData
4793)
4794{
4795 WDI_EventInfoType wdiEventData;
4796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4797
4798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 ------------------------------------------------------------------------*/
4801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4802 {
4803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4804 "WDI API call before module is initialized - Fail request");
4805
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004807 }
4808
4809 /*------------------------------------------------------------------------
4810 Fill in Event data and post to the Main FSM
4811 ------------------------------------------------------------------------*/
4812 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 wdiEventData.pEventData = pwdiSwitchChReqParams;
4814 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4815 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 wdiEventData.pUserData = pUserData;
4817
4818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4819
4820}/*WDI_SwitchChReq*/
4821
4822
4823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 wishes to add or update a STA in HW. Upon the call of
4826 this API the WLAN DAL will pack and send a HAL Start
4827 message request message to the lower RIVA sub-system if
4828 DAL is in state STARTED.
4829
4830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004832
4833 WDI_Start must have been called.
4834
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 wdiConfigSTARspCb: callback for passing back the
4839 response of the config STA operation received from the
4840 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004841
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 callback
4844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 @see WDI_Start
4846 @return Result of the function call
4847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004849WDI_ConfigSTAReq
4850(
4851 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4852 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4853 void* pUserData
4854)
4855{
4856 WDI_EventInfoType wdiEventData;
4857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4858
4859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 ------------------------------------------------------------------------*/
4862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4863 {
4864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4865 "WDI API call before module is initialized - Fail request");
4866
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 }
4869
4870 /*------------------------------------------------------------------------
4871 Fill in Event data and post to the Main FSM
4872 ------------------------------------------------------------------------*/
4873 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4875 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4876 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 wdiEventData.pUserData = pUserData;
4878
4879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4880
4881}/*WDI_ConfigSTAReq*/
4882
4883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 wants to change the state of an ongoing link. Upon the
4886 call of this API the WLAN DAL will pack and send a HAL
4887 Start message request message to the lower RIVA
4888 sub-system if DAL is in state STARTED.
4889
4890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004892
4893 WDI_JoinStartReq must have been called.
4894
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004897
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiSetLinkStateRspCb: callback for passing back the
4899 response of the set link state operation received from
4900 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 callback
4904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 @see WDI_JoinStartReq
4906 @return Result of the function call
4907*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004909WDI_SetLinkStateReq
4910(
4911 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4912 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4913 void* pUserData
4914)
4915{
4916 WDI_EventInfoType wdiEventData;
4917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4918
4919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 ------------------------------------------------------------------------*/
4922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4923 {
4924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4925 "WDI API call before module is initialized - Fail request");
4926
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 }
4929
4930 /*------------------------------------------------------------------------
4931 Fill in Event data and post to the Main FSM
4932 ------------------------------------------------------------------------*/
4933 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4935 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4936 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 wdiEventData.pUserData = pUserData;
4938
4939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4940
4941}/*WDI_SetLinkStateReq*/
4942
4943
4944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 to get statistics (MIB counters) from the device. Upon
4947 the call of this API the WLAN DAL will pack and send a
4948 HAL Start request message to the lower RIVA sub-system
4949 if DAL is in state STARTED.
4950
4951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004953
4954 WDI_Start must have been called.
4955
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004958
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wdiGetStatsRspCb: callback for passing back the response
4960 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 callback
4964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 @see WDI_Start
4966 @return Result of the function call
4967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004969WDI_GetStatsReq
4970(
4971 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4972 WDI_GetStatsRspCb wdiGetStatsRspCb,
4973 void* pUserData
4974)
4975{
4976 WDI_EventInfoType wdiEventData;
4977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4978
4979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004981 ------------------------------------------------------------------------*/
4982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4983 {
4984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4985 "WDI API call before module is initialized - Fail request");
4986
Jeff Johnsone7245742012-09-05 17:12:55 -07004987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004988 }
4989
4990 /*------------------------------------------------------------------------
4991 Fill in Event data and post to the Main FSM
4992 ------------------------------------------------------------------------*/
4993 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 wdiEventData.pEventData = pwdiGetStatsReqParams;
4995 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4996 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 wdiEventData.pUserData = pUserData;
4998
4999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5000
5001}/*WDI_GetStatsReq*/
5002
Srinivas Girigowda2471d832013-01-25 13:33:11 -08005003#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5004/**
5005 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5006 to get roam rssi from the device. Upon
5007 the call of this API the WLAN DAL will pack and send a
5008 HAL Start request message to the lower RIVA sub-system
5009 if DAL is in state STARTED.
5010
5011 In state BUSY this request will be queued. Request won't
5012 be allowed in any other state.
5013
5014 WDI_Start must have been called.
5015
5016 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5017 specified by the Device Interface
5018
5019 wdiGetRoamRssiRspCb: callback for passing back the response
5020 of the get stats operation received from the device
5021
5022 pUserData: user data will be passed back with the
5023 callback
5024
5025 @see WDI_Start
5026 @return Result of the function call
5027*/
5028WDI_Status
5029WDI_GetRoamRssiReq
5030(
5031 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5032 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5033 void* pUserData
5034)
5035{
5036 WDI_EventInfoType wdiEventData;
5037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5038
5039 /*------------------------------------------------------------------------
5040 Sanity Check
5041 ------------------------------------------------------------------------*/
5042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5043 {
5044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5045 "WDI API call before module is initialized - Fail request");
5046
5047 return WDI_STATUS_E_NOT_ALLOWED;
5048 }
5049 /*------------------------------------------------------------------------
5050 Fill in Event data and post to the Main FSM
5051 ------------------------------------------------------------------------*/
5052 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5053 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5054 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5055 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5056 wdiEventData.pUserData = pUserData;
5057
5058 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5059
5060}/*WDI_GetRoamRssiReq*/
5061#endif
5062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063
5064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005065 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 it wishes to change the configuration of the WLAN
5067 Device. Upon the call of this API the WLAN DAL will pack
5068 and send a HAL Update CFG request message to the lower
5069 RIVA sub-system if DAL is in state STARTED.
5070
5071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005073
5074 WDI_Start must have been called.
5075
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005078
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 wdiUpdateCfgsRspCb: callback for passing back the
5080 response of the update cfg operation received from the
5081 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 callback
5085
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 @see WDI_Start
5087 @return Result of the function call
5088*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005090WDI_UpdateCfgReq
5091(
5092 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5093 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5094 void* pUserData
5095)
5096{
5097 WDI_EventInfoType wdiEventData;
5098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5099
5100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 ------------------------------------------------------------------------*/
5103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5104 {
5105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5106 "WDI API call before module is initialized - Fail request");
5107
Jeff Johnsone7245742012-09-05 17:12:55 -07005108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005109 }
5110
5111 /*------------------------------------------------------------------------
5112 Fill in Event data and post to the Main FSM
5113 ------------------------------------------------------------------------*/
5114 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005115 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5116 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5117 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 wdiEventData.pUserData = pUserData;
5119
5120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5121
5122}/*WDI_UpdateCfgReq*/
5123
5124
5125
5126/**
5127 @brief WDI_AddBAReq will be called when the upper MAC has setup
5128 successfully a BA session and needs to notify the HW for
5129 the appropriate settings to take place. Upon the call of
5130 this API the WLAN DAL will pack and send a HAL Add BA
5131 request message to the lower RIVA sub-system if DAL is
5132 in state STARTED.
5133
5134 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005136
5137 WDI_PostAssocReq must have been called.
5138
5139 @param wdiAddBAReqParams: the add BA parameters as specified by
5140 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005141
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 wdiAddBARspCb: callback for passing back the response of
5143 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005144
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 callback
5147
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 @see WDI_PostAssocReq
5149 @return Result of the function call
5150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005152WDI_AddBAReq
5153(
5154 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5155 WDI_AddBARspCb wdiAddBARspCb,
5156 void* pUserData
5157)
5158{
5159 WDI_EventInfoType wdiEventData;
5160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5161
5162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 ------------------------------------------------------------------------*/
5165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5166 {
5167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5168 "WDI API call before module is initialized - Fail request");
5169
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 }
5172
5173 /*------------------------------------------------------------------------
5174 Fill in Event data and post to the Main FSM
5175 ------------------------------------------------------------------------*/
5176 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.pEventData = pwdiAddBAReqParams;
5178 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5179 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiEventData.pUserData = pUserData;
5181
5182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5183
5184}/*WDI_AddBAReq*/
5185
5186
5187/**
5188 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5189 successfully a BA session and needs to notify the HW for
5190 the appropriate settings to take place. Upon the call of
5191 this API the WLAN DAL will pack and send a HAL Add BA
5192 request message to the lower RIVA sub-system if DAL is
5193 in state STARTED.
5194
5195 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005197
5198 WDI_PostAssocReq must have been called.
5199
5200 @param wdiAddBAReqParams: the add BA parameters as specified by
5201 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 wdiAddBARspCb: callback for passing back the response of
5204 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 callback
5208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 @see WDI_PostAssocReq
5210 @return Result of the function call
5211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005213WDI_TriggerBAReq
5214(
5215 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5216 WDI_TriggerBARspCb wdiTriggerBARspCb,
5217 void* pUserData
5218)
5219{
5220 WDI_EventInfoType wdiEventData;
5221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5222
5223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 ------------------------------------------------------------------------*/
5226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5227 {
5228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5229 "WDI API call before module is initialized - Fail request");
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005232 }
5233
5234 /*------------------------------------------------------------------------
5235 Fill in Event data and post to the Main FSM
5236 ------------------------------------------------------------------------*/
5237 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5239 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5240 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 wdiEventData.pUserData = pUserData;
5242
5243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5244
5245}/*WDI_AddBAReq*/
5246
5247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wishes to update any of the Beacon parameters used by HW.
5250 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5251 message to the lower RIVA sub-system if DAL is in state
5252 STARTED.
5253
5254 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005256
5257 WDI_PostAssocReq must have been called.
5258
Jeff Johnsone7245742012-09-05 17:12:55 -07005259 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 wdiUpdateBeaconParamsRspCb: callback for passing back the
5263 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 callback
5267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @see WDI_PostAssocReq
5269 @return Result of the function call
5270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005272WDI_UpdateBeaconParamsReq
5273(
5274 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5275 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5276 void* pUserData
5277)
5278{
5279 WDI_EventInfoType wdiEventData;
5280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5281
5282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 ------------------------------------------------------------------------*/
5285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5286 {
5287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5288 "WDI API call before module is initialized - Fail request");
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 }
5292
5293 /*------------------------------------------------------------------------
5294 Fill in Event data and post to the Main FSM
5295 ------------------------------------------------------------------------*/
5296 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5298 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5299 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiEventData.pUserData = pUserData;
5301
5302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5303
5304}/*WDI_UpdateBeaconParamsReq*/
5305
5306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 wishes to update the Beacon template used by HW.
5309 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5310 message to the lower RIVA sub-system if DAL is in state
5311 STARTED.
5312
5313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005315
5316 WDI_PostAssocReq must have been called.
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005320
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiSendBeaconParamsRspCb: callback for passing back the
5322 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 callback
5326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 @see WDI_PostAssocReq
5328 @return Result of the function call
5329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005331WDI_SendBeaconParamsReq
5332(
5333 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5334 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5335 void* pUserData
5336)
5337{
5338 WDI_EventInfoType wdiEventData;
5339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5340
5341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005343 ------------------------------------------------------------------------*/
5344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5345 {
5346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5347 "WDI API call before module is initialized - Fail request");
5348
Jeff Johnsone7245742012-09-05 17:12:55 -07005349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 }
5351
5352 /*------------------------------------------------------------------------
5353 Fill in Event data and post to the Main FSM
5354 ------------------------------------------------------------------------*/
5355 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005356 wdiEventData.pEventData = pwdiSendBeaconParams;
5357 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5358 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 wdiEventData.pUserData = pUserData;
5360
5361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5362
5363}/*WDI_SendBeaconParamsReq*/
5364
5365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 upper MAC wants to update the probe response template to
5368 be transmitted as Soft AP
5369 Upon the call of this API the WLAN DAL will
5370 pack and send the probe rsp template message to the
5371 lower RIVA sub-system if DAL is in state STARTED.
5372
5373 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005375
5376
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005379
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 wdiSendBeaconParamsRspCb: callback for passing back the
5381 response of the Send Beacon Params operation received
5382 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005383
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 callback
5386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 @see WDI_AddBAReq
5388 @return Result of the function call
5389*/
5390
Jeff Johnsone7245742012-09-05 17:12:55 -07005391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005392WDI_UpdateProbeRspTemplateReq
5393(
5394 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5395 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5396 void* pUserData
5397)
5398{
5399 WDI_EventInfoType wdiEventData;
5400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5401
5402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 ------------------------------------------------------------------------*/
5405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5406 {
5407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5408 "WDI API call before module is initialized - Fail request");
5409
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 }
5412
5413 /*------------------------------------------------------------------------
5414 Fill in Event data and post to the Main FSM
5415 ------------------------------------------------------------------------*/
5416 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5418 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5419 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 wdiEventData.pUserData = pUserData;
5421
5422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5423
5424}/*WDI_UpdateProbeRspTemplateReq*/
5425
5426/**
5427 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5428 to the NV memory.
5429
5430
5431 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5432 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005433
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 wdiNvDownloadRspCb: callback for passing back the response of
5435 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005436
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 callback
5439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 @see WDI_PostAssocReq
5441 @return Result of the function call
5442*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005443WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005444WDI_NvDownloadReq
5445(
5446 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5447 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5448 void* pUserData
5449)
5450{
5451 WDI_EventInfoType wdiEventData;
5452
5453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 ------------------------------------------------------------------------*/
5456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5457 {
5458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5459 "WDI API call before module is initialized - Fail request");
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 }
5463
5464 /*------------------------------------------------------------------------
5465 Fill in Event data and post to the Main FSM
5466 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5468 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5469 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5470 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiEventData.pUserData = pUserData;
5472
5473 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5474
5475}/*WDI_NVDownloadReq*/
5476
Jeff Johnson295189b2012-06-20 16:38:30 -07005477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005478 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 upper MAC wants to send Notice of Absence
5480 Upon the call of this API the WLAN DAL will
5481 pack and send the probe rsp template message to the
5482 lower RIVA sub-system if DAL is in state STARTED.
5483
5484 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005485 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005486
5487
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005489 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005490
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 wdiSendBeaconParamsRspCb: callback for passing back the
5492 response of the Send Beacon Params operation received
5493 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005494
Jeff Johnson295189b2012-06-20 16:38:30 -07005495 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 callback
5497
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 @see WDI_AddBAReq
5499 @return Result of the function call
5500*/
5501WDI_Status
5502WDI_SetP2PGONOAReq
5503(
5504 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5505 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5506 void* pUserData
5507)
5508{
5509 WDI_EventInfoType wdiEventData;
5510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5511
5512 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 ------------------------------------------------------------------------*/
5515 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5516 {
5517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5518 "WDI API call before module is initialized - Fail request");
5519
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005521 }
5522
5523 /*------------------------------------------------------------------------
5524 Fill in Event data and post to the Main FSM
5525 ------------------------------------------------------------------------*/
5526 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005527 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5528 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5529 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 wdiEventData.pUserData = pUserData;
5531
5532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5533
5534}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005535
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305536#ifdef FEATURE_WLAN_TDLS
5537/**
5538 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5539 upper MAC wants to send TDLS Link Establish Request Parameters
5540 Upon the call of this API the WLAN DAL will
5541 pack and send the TDLS Link Establish Request message to the
5542 lower RIVA sub-system if DAL is in state STARTED.
5543
5544 In state BUSY this request will be queued. Request won't
5545 be allowed in any other state.
5546
5547
5548 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5549 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5550
5551 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5552 response of the TDLS Link Establish request received
5553 from the device
5554
5555 pUserData: user data will be passed back with the
5556 callback
5557
5558 @see
5559 @return Result of the function call
5560*/
5561WDI_Status
5562WDI_SetTDLSLinkEstablishReq
5563(
5564 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5565 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5566 void* pUserData
5567)
5568{
5569 WDI_EventInfoType wdiEventData;
5570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5571
5572 /*------------------------------------------------------------------------
5573 Sanity Check
5574 ------------------------------------------------------------------------*/
5575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5576 {
5577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5578 "WDI API call before module is initialized - Fail request");
5579
5580 return WDI_STATUS_E_NOT_ALLOWED;
5581 }
5582
5583 /*------------------------------------------------------------------------
5584 Fill in Event data and post to the Main FSM
5585 ------------------------------------------------------------------------*/
5586 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5587 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5588 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5589 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5590 wdiEventData.pUserData = pUserData;
5591
5592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5593
5594}/*WDI_SetTDLSLinkEstablishReq*/
5595#endif
5596
Jeff Johnson295189b2012-06-20 16:38:30 -07005597/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 UMAC wanted to add STA self while opening any new session
5600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005602
5603
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005606
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005608 callback
5609
5610 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 @return Result of the function call
5612*/
5613WDI_Status
5614WDI_AddSTASelfReq
5615(
5616 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5617 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5618 void* pUserData
5619)
5620{
5621 WDI_EventInfoType wdiEventData;
5622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5623
5624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005626 ------------------------------------------------------------------------*/
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
Jeff Johnsone7245742012-09-05 17:12:55 -07005632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 }
5634
5635 /*------------------------------------------------------------------------
5636 Fill in Event data and post to the Main FSM
5637 ------------------------------------------------------------------------*/
5638 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005639 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5640 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5641 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 wdiEventData.pUserData = pUserData;
5643
5644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5645
5646}/*WDI_AddSTASelfReq*/
5647
5648
Jeff Johnsone7245742012-09-05 17:12:55 -07005649#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005650/**
5651 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5652 the device of a successful add TSpec negotiation. HW
5653 needs to receive the TSpec Info from the UMAC in order
5654 to configure properly the QoS data traffic. Upon the
5655 call of this API the WLAN DAL will pack and send a HAL
5656 Add TS request message to the lower RIVA sub-system if
5657 DAL is in state STARTED.
5658
5659 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005661
5662 WDI_PostAssocReq must have been called.
5663
5664 @param wdiAddTsReqParams: the add TS parameters as specified by
5665 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005666
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 wdiAddTsRspCb: callback for passing back the response of
5668 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005671 callback
5672
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 @see WDI_PostAssocReq
5674 @return Result of the function call
5675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005677WDI_AggrAddTSReq
5678(
5679 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5680 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5681 void* pUserData
5682)
5683{
5684 WDI_EventInfoType wdiEventData;
5685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5686
5687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 ------------------------------------------------------------------------*/
5690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5691 {
5692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5693 "WDI API call before module is initialized - Fail request");
5694
Jeff Johnsone7245742012-09-05 17:12:55 -07005695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005696 }
5697
5698 /*------------------------------------------------------------------------
5699 Fill in Event data and post to the Main FSM
5700 ------------------------------------------------------------------------*/
5701 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005702 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5703 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5704 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 wdiEventData.pUserData = pUserData;
5706
5707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5708
5709}/*WDI_AggrAddTSReq*/
5710
5711#endif /* WLAN_FEATURE_VOWIFI_11R */
5712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713/**
5714 @brief WDI_FTMCommandReq
5715 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005716
5717 @param ftmCommandReq: FTM Command Body
5718 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 @see
5722 @return Result of the function call
5723*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005724WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005725WDI_FTMCommandReq
5726(
5727 WDI_FTMCommandReqType *ftmCommandReq,
5728 WDI_FTMCommandRspCb ftmCommandRspCb,
5729 void *pUserData
5730)
5731{
5732 WDI_EventInfoType wdiEventData;
5733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5734
5735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 ------------------------------------------------------------------------*/
5738 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5739 {
5740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5741 "WDI API call before module is initialized - Fail request");
5742
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 }
5745
5746 /*------------------------------------------------------------------------
5747 Fill in Event data and post to the Main FSM
5748 ------------------------------------------------------------------------*/
5749 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5750 wdiEventData.pEventData = (void *)ftmCommandReq;
5751 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5752 wdiEventData.pCBfnc = ftmCommandRspCb;
5753 wdiEventData.pUserData = pUserData;
5754
5755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5756}
Jeff Johnson295189b2012-06-20 16:38:30 -07005757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005759
5760 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005761 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005762
5763
5764 @param pwdiResumeReqParams: as specified by
5765 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005766
Jeff Johnson295189b2012-06-20 16:38:30 -07005767 wdiResumeReqRspCb: callback for passing back the response of
5768 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 callback
5772
5773 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005774 @return Result of the function call
5775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005777WDI_HostResumeReq
5778(
5779 WDI_ResumeParamsType* pwdiResumeReqParams,
5780 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5781 void* pUserData
5782)
5783{
5784 WDI_EventInfoType wdiEventData;
5785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5786
5787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 ------------------------------------------------------------------------*/
5790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5791 {
5792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5793 "WDI API call before module is initialized - Fail request");
5794
Jeff Johnsone7245742012-09-05 17:12:55 -07005795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 }
5797
5798 /*------------------------------------------------------------------------
5799 Fill in Event data and post to the Main FSM
5800 ------------------------------------------------------------------------*/
5801 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 wdiEventData.pEventData = pwdiResumeReqParams;
5803 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5804 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 wdiEventData.pUserData = pUserData;
5806
5807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5808
5809}/*WDI_HostResumeReq*/
5810
5811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005812 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005813
5814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005816
5817
5818 @param pwdiDelStaSelfReqParams: as specified by
5819 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005820
Jeff Johnson295189b2012-06-20 16:38:30 -07005821 wdiDelStaSelfRspCb: callback for passing back the response of
5822 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 callback
5826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 @see WDI_PostAssocReq
5828 @return Result of the function call
5829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005831WDI_DelSTASelfReq
5832(
5833 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5834 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5835 void* pUserData
5836)
5837{
5838 WDI_EventInfoType wdiEventData;
5839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5840
5841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 ------------------------------------------------------------------------*/
5844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "WDI API call before module is initialized - Fail request");
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*------------------------------------------------------------------------
5853 Fill in Event data and post to the Main FSM
5854 ------------------------------------------------------------------------*/
5855 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5857 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5858 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wdiEventData.pUserData = pUserData;
5860
5861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5862
5863}/*WDI_AggrAddTSReq*/
5864
5865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5867 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 Upon the call of this API the WLAN DAL will pack
5869 and send a HAL Set Tx Per Tracking request message to the
5870 lower RIVA sub-system if DAL is in state STARTED.
5871
5872 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005874
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005877
Jeff Johnson295189b2012-06-20 16:38:30 -07005878 pwdiSetTxPerTrackingRspCb: callback for passing back the
5879 response of the set Tx PER Tracking configurations operation received
5880 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005881
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 callback
5884
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 @return Result of the function call
5886*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005888WDI_SetTxPerTrackingReq
5889(
5890 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5891 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5892 void* pUserData
5893)
5894{
5895 WDI_EventInfoType wdiEventData;
5896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5897
5898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 ------------------------------------------------------------------------*/
5901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5902 {
5903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5904 "WDI API call before module is initialized - Fail request");
5905
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 }
5908
5909 /*------------------------------------------------------------------------
5910 Fill in Event data and post to the Main FSM
5911 ------------------------------------------------------------------------*/
5912 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005913 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005915 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 wdiEventData.pUserData = pUserData;
5917
5918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5919
5920}/*WDI_SetTxPerTrackingReq*/
5921
5922/**
5923 @brief WDI_SetTmLevelReq
5924 If HW Thermal condition changed, driver should react based on new
5925 HW thermal condition.
5926
5927 @param pwdiSetTmLevelReq: New thermal condition information
5928
5929 pwdiSetTmLevelRspCb: callback
5930
5931 usrData: user data will be passed back with the
5932 callback
5933
5934 @return Result of the function call
5935*/
5936WDI_Status
5937WDI_SetTmLevelReq
5938(
5939 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5940 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5941 void *usrData
5942)
5943{
5944 WDI_EventInfoType wdiEventData;
5945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5946
5947 /*------------------------------------------------------------------------
5948 Sanity Check
5949 ------------------------------------------------------------------------*/
5950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5951 {
5952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5953 "WDI API call before module is initialized - Fail request");
5954
5955 return WDI_STATUS_E_NOT_ALLOWED;
5956 }
5957
5958 /*------------------------------------------------------------------------
5959 Fill in Event data and post to the Main FSM
5960 ------------------------------------------------------------------------*/
5961 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5962 wdiEventData.pEventData = pwdiSetTmLevelReq;
5963 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5964 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5965 wdiEventData.pUserData = usrData;
5966
5967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5968}
5969
5970/**
5971 @brief WDI_HostSuspendInd
5972
5973 Suspend Indication from the upper layer will be sent
5974 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005975
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005977
5978 @see
5979
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 @return Status of the request
5981*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005982WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005983WDI_HostSuspendInd
5984(
5985 WDI_SuspendParamsType* pwdiSuspendIndParams
5986)
5987{
5988
5989 WDI_EventInfoType wdiEventData;
5990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5991
5992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 ------------------------------------------------------------------------*/
5995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5996 {
5997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5998 "WDI API call before module is initialized - Fail request");
5999
Jeff Johnsone7245742012-09-05 17:12:55 -07006000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 }
6002
6003 /*------------------------------------------------------------------------
6004 Fill in Event data and post to the Main FSM
6005 ------------------------------------------------------------------------*/
6006 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 wdiEventData.pEventData = pwdiSuspendIndParams;
6008 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6009 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiEventData.pUserData = NULL;
6011
6012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6013
6014}/*WDI_HostSuspendInd*/
6015
6016/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006017 @brief WDI_TrafficStatsInd
6018 Traffic Stats from the upper layer will be sent
6019 down to HAL
6020
6021 @param WDI_TrafficStatsIndType
6022
6023 @see
6024
6025 @return Status of the request
6026*/
6027WDI_Status
6028WDI_TrafficStatsInd
6029(
6030 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6031)
6032{
6033
6034 WDI_EventInfoType wdiEventData;
6035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6036
6037 /*------------------------------------------------------------------------
6038 Sanity Check
6039 ------------------------------------------------------------------------*/
6040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6041 {
6042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6043 "WDI API call before module is initialized - Fail request");
6044
6045 return WDI_STATUS_E_NOT_ALLOWED;
6046 }
6047
6048 /*------------------------------------------------------------------------
6049 Fill in Event data and post to the Main FSM
6050 ------------------------------------------------------------------------*/
6051 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6052 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6053 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6054 wdiEventData.pCBfnc = NULL;
6055 wdiEventData.pUserData = NULL;
6056
6057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6058
6059}/*WDI_TrafficStatsInd*/
6060
Chet Lanctota96bb432013-03-18 10:26:30 -07006061#ifdef WLAN_FEATURE_11W
6062/**
6063 @brief WDI_ExcludeUnencryptedInd
6064 Register with HAL to receive/drop unencrypted frames
6065
6066 @param WDI_ExcludeUnencryptIndType
6067
6068 @see
6069
6070 @return Status of the request
6071*/
6072WDI_Status
6073WDI_ExcludeUnencryptedInd
6074(
6075 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6076)
6077{
6078
6079 WDI_EventInfoType wdiEventData;
6080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6081
6082 /*------------------------------------------------------------------------
6083 Sanity Check
6084 ------------------------------------------------------------------------*/
6085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6086 {
6087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6088 "WDI API call before module is initialized - Fail request");
6089
6090 return WDI_STATUS_E_NOT_ALLOWED;
6091 }
6092
6093 /*------------------------------------------------------------------------
6094 Fill in Event data and post to the Main FSM
6095 ------------------------------------------------------------------------*/
6096 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6097 wdiEventData.pEventData = pWdiExcUnencParams;
6098 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6099 wdiEventData.pCBfnc = NULL;
6100 wdiEventData.pUserData = NULL;
6101
6102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6103
6104}/*WDI_TrafficStatsInd*/
6105#endif
6106
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006107/**
Yue Ma365933a2013-08-14 15:59:08 -07006108 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6109
6110 @param addPeriodicTxPtrnParams: Add Pattern parameters
6111
6112 @see
6113
6114 @return Status of the request
6115*/
6116WDI_Status
6117WDI_AddPeriodicTxPtrnInd
6118(
6119 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6120)
6121{
6122 WDI_EventInfoType wdiEventData;
6123
6124 /*-------------------------------------------------------------------------
6125 Sanity Check
6126 ------------------------------------------------------------------------*/
6127 if (eWLAN_PAL_FALSE == gWDIInitialized)
6128 {
6129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6130 "WDI API call before module is initialized - Fail request!");
6131
6132 return WDI_STATUS_E_NOT_ALLOWED;
6133 }
6134
6135 /*-------------------------------------------------------------------------
6136 Fill in Event data and post to the Main FSM
6137 ------------------------------------------------------------------------*/
6138 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6139 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6140 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6141 wdiEventData.pCBfnc = NULL;
6142 wdiEventData.pUserData = NULL;
6143
6144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6145}
6146
6147/**
6148 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6149
6150 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6151
6152 @see
6153
6154 @return Status of the request
6155*/
6156WDI_Status
6157WDI_DelPeriodicTxPtrnInd
6158(
6159 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6160)
6161{
6162 WDI_EventInfoType wdiEventData;
6163
6164 /*-------------------------------------------------------------------------
6165 Sanity Check
6166 ------------------------------------------------------------------------*/
6167 if (eWLAN_PAL_FALSE == gWDIInitialized)
6168 {
6169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6170 "WDI API call before module is initialized - Fail request!");
6171
6172 return WDI_STATUS_E_NOT_ALLOWED;
6173 }
6174
6175 /*-------------------------------------------------------------------------
6176 Fill in Event data and post to the Main FSM
6177 ------------------------------------------------------------------------*/
6178 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6179 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6180 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6181 wdiEventData.pCBfnc = NULL;
6182 wdiEventData.pUserData = NULL;
6183
6184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6185}
6186
6187/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 @brief WDI_HALDumpCmdReq
6189 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
6191 @param halDumpCmdReqParams: Hal Dump Command Body
6192 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 @see
6196 @return Result of the function call
6197*/
6198WDI_Status WDI_HALDumpCmdReq
6199(
6200 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6201 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6202 void *pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6223 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6224 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6225 wdiEventData.pCBfnc = halDumpCmdRspCb;
6226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229}
6230
Jeff Johnsone7245742012-09-05 17:12:55 -07006231/*============================================================================
6232
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006234
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 ============================================================================*/
6236
6237/**
6238 @brief Main FSM Start function for all states except BUSY
6239
Jeff Johnsone7245742012-09-05 17:12:55 -07006240
6241 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 wdiEV: event posted to the main DAL FSM
6243 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 structure
6245
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 @see
6247 @return Result of the function call
6248*/
6249WDI_Status
6250WDI_PostMainEvent
6251(
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 WDI_ControlBlockType* pWDICtx,
6253 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006255
Jeff Johnson295189b2012-06-20 16:38:30 -07006256)
6257{
Jeff Johnsone7245742012-09-05 17:12:55 -07006258 WDI_Status wdiStatus;
6259 WDI_MainFuncType pfnWDIMainEvHdlr;
6260 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6262
6263 /*-------------------------------------------------------------------------
6264 Sanity check
6265 -------------------------------------------------------------------------*/
6266 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6267 ( wdiEV >= WDI_MAX_EVENT ))
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6270 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6271 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 }
6274
6275 /*Access to the global state must be locked */
6276 wpalMutexAcquire(&pWDICtx->wptMutex);
6277
6278 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006280
6281 wdiOldState = pWDICtx->uGlobalState;
6282
6283 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6285 response comes from CCPU for the request sent by host:
6286 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 -07006287 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 -07006288 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006289 CCPU:
6290 don't change the state */
6291 if ( WDI_RESPONSE_EVENT != wdiEV)
6292 {
6293 /*Transition to BUSY State - the request is now being processed by the FSM,
6294 if the request fails we shall transition back to the old state, if not
6295 the request will manage its own state transition*/
6296 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6297 }
6298 /* If the state function associated with the EV is NULL it means that this
6299 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 {
6302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 }
6307 else
6308 {
6309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 }
6314
6315 /* If a request handles itself well it will end up in a success or in a
6316 pending
6317 Success - means that the request was processed and the proper state
6318 transition already occurred or will occur when the resp is received
6319 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006320
Jeff Johnson295189b2012-06-20 16:38:30 -07006321 Pending - means the request could not be processed at this moment in time
6322 because the FSM was already busy so no state transition or dequeueing
6323 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006324
Jeff Johnson295189b2012-06-20 16:38:30 -07006325 Success for synchronous case means that the transition may occur and
6326 processing of pending requests may continue - so it should go through
6327 and restores the state and continue processing queued requests*/
6328 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6329 ( WDI_STATUS_PENDING != wdiStatus ))
6330 {
6331 if ( WDI_RESPONSE_EVENT != wdiEV)
6332 {
6333 /*The request has failed or could not be processed - transition back to
6334 the old state - check to see if anything was queued and try to execute
6335 The dequeue logic should post a message to a thread and return - no
6336 actual processing can occur */
6337 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6338 }
6339 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 }
6342
6343 /* we have completed processing the event */
6344 wpalMutexRelease(&pWDICtx->wptMutex);
6345
Jeff Johnsone7245742012-09-05 17:12:55 -07006346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347
6348}/*WDI_PostMainEvent*/
6349
6350
6351/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006353--------------------------------------------------------------------------*/
6354/**
6355 @brief Main FSM Start function for all states except BUSY
6356
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
6358 @param pWDICtx: pointer to the WLAN DAL context
6359 pEventData: pointer to the event information structure
6360
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 @see
6362 @return Result of the function call
6363*/
6364WDI_Status
6365WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006366(
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 WDI_ControlBlockType* pWDICtx,
6368 WDI_EventInfoType* pEventData
6369)
6370{
6371
6372 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 ----------------------------------------------------------------------*/
6375 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006378 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 pWDICtx, pEventData);
6380 return WDI_STATUS_E_FAILURE;
6381 }
6382
6383 wpalMutexAcquire(&pWDICtx->wptMutex);
6384
6385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 ----------------------------------------------------------------------*/
6388 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6389 {
6390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6391 "Control Transport not yet Open - queueing the request");
6392
6393 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006395
6396 wpalMutexRelease(&pWDICtx->wptMutex);
6397 return WDI_STATUS_PENDING;
6398 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006399
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 wpalMutexRelease(&pWDICtx->wptMutex);
6401
6402 /*Return Success*/
6403 return WDI_ProcessRequest( pWDICtx, pEventData );
6404
6405}/*WDI_MainStart*/
6406
6407/**
6408 @brief Main FSM Response function for state INIT
6409
Jeff Johnsone7245742012-09-05 17:12:55 -07006410
6411 @param pWDICtx: pointer to the WLAN DAL context
6412 pEventData: pointer to the event information structure
6413
Jeff Johnson295189b2012-06-20 16:38:30 -07006414 @see
6415 @return Result of the function call
6416*/
6417WDI_Status
6418WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006419(
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 WDI_ControlBlockType* pWDICtx,
6421 WDI_EventInfoType* pEventData
6422)
6423{
6424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006428
6429 /*Return Success*/
6430 return WDI_STATUS_E_NOT_ALLOWED;
6431}/* WDI_MainRspInit */
6432
6433/**
6434 @brief Main FSM Close function for all states except BUSY
6435
Jeff Johnsone7245742012-09-05 17:12:55 -07006436
6437 @param pWDICtx: pointer to the WLAN DAL context
6438 pEventData: pointer to the event information structure
6439
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 @see
6441 @return Result of the function call
6442*/
6443WDI_Status
6444WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006445(
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 WDI_ControlBlockType* pWDICtx,
6447 WDI_EventInfoType* pEventData
6448)
6449{
6450
6451 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006453 ----------------------------------------------------------------------*/
6454 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6455 {
6456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006457 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 pWDICtx, pEventData);
6459 return WDI_STATUS_E_FAILURE;
6460 }
6461
6462 /*Return Success*/
6463 return WDI_ProcessRequest( pWDICtx, pEventData );
6464
6465}/*WDI_MainClose*/
6466/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006468--------------------------------------------------------------------------*/
6469/**
6470 @brief Main FSM Start function for state STARTED
6471
Jeff Johnsone7245742012-09-05 17:12:55 -07006472
6473 @param pWDICtx: pointer to the WLAN DAL context
6474 pEventData: pointer to the event information structure
6475
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 @see
6477 @return Result of the function call
6478*/
6479WDI_Status
6480WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006481(
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 WDI_ControlBlockType* pWDICtx,
6483 WDI_EventInfoType* pEventData
6484)
6485{
6486 WDI_StartRspCb wdiStartRspCb = NULL;
6487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6488
6489 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 ----------------------------------------------------------------------*/
6492 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6493 {
6494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006495 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 pWDICtx, pEventData);
6497 return WDI_STATUS_E_FAILURE;
6498 }
6499
6500 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006501 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006502 ----------------------------------------------------------------------*/
6503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006505
6506 wpalMutexAcquire(&pWDICtx->wptMutex);
6507
6508 /*Transition back to started because the post function transitioned us to
6509 busy*/
6510 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6511
6512 /*Check to see if any request is pending*/
6513 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 wpalMutexRelease(&pWDICtx->wptMutex);
6516
6517 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6519
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 /*Notify UMAC*/
6521 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6522
6523 /*Return Success*/
6524 return WDI_STATUS_SUCCESS;
6525
6526}/*WDI_MainStartStarted*/
6527
6528/**
6529 @brief Main FSM Stop function for state STARTED
6530
Jeff Johnsone7245742012-09-05 17:12:55 -07006531
6532 @param pWDICtx: pointer to the WLAN DAL context
6533 pEventData: pointer to the event information structure
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 @see
6536 @return Result of the function call
6537*/
6538WDI_Status
6539WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006540(
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 WDI_ControlBlockType* pWDICtx,
6542 WDI_EventInfoType* pEventData
6543)
6544{
6545 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ----------------------------------------------------------------------*/
6548 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006551 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 pWDICtx, pEventData);
6553 return WDI_STATUS_E_FAILURE;
6554 }
6555
6556 /*State at this point is BUSY - because we enter this state before posting
6557 an event to the FSM in order to prevent potential race conditions*/
6558
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6560 "Processing stop request in FSM");
6561
6562 /*Return Success*/
6563 return WDI_ProcessRequest( pWDICtx, pEventData );
6564
6565}/*WDI_MainStopStarted*/
6566/**
6567 @brief Main FSM Request function for state started
6568
Jeff Johnsone7245742012-09-05 17:12:55 -07006569
6570 @param pWDICtx: pointer to the WLAN DAL context
6571 pEventData: pointer to the event information structure
6572
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 @see
6574 @return Result of the function call
6575*/
6576WDI_Status
6577WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006578(
Jeff Johnson295189b2012-06-20 16:38:30 -07006579 WDI_ControlBlockType* pWDICtx,
6580 WDI_EventInfoType* pEventData
6581)
6582{
6583
6584 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 ----------------------------------------------------------------------*/
6587 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006590 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 pWDICtx, pEventData);
6592 return WDI_STATUS_E_FAILURE;
6593 }
6594
6595 /*State at this point is BUSY - because we enter this state before posting
6596 an event to the FSM in order to prevent potential race conditions*/
6597
6598 /*Return Success*/
6599 return WDI_ProcessRequest( pWDICtx, pEventData );
6600
6601}/*WDI_MainReqStarted*/
6602
6603/**
6604 @brief Main FSM Response function for all states except INIT
6605
Jeff Johnsone7245742012-09-05 17:12:55 -07006606
6607 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006609
Jeff Johnson295189b2012-06-20 16:38:30 -07006610 @see
6611 @return Result of the function call
6612*/
6613WDI_Status
6614WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006615(
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 WDI_ControlBlockType* pWDICtx,
6617 WDI_EventInfoType* pEventData
6618)
6619{
Jeff Johnsone7245742012-09-05 17:12:55 -07006620 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 wpt_boolean expectedResponse;
6622
6623 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 ----------------------------------------------------------------------*/
6626 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6627 {
6628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006629 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 pWDICtx, pEventData);
6631 return WDI_STATUS_E_FAILURE;
6632 }
6633
6634 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6635 {
6636 /* we received an expected response */
6637 expectedResponse = eWLAN_PAL_TRUE;
6638
6639 /*We expect that we will transition to started after this processing*/
6640 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6641
6642 /* we are no longer expecting a response */
6643 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6644 }
6645 else
6646 {
6647 /* we received an indication or unexpected response */
6648 expectedResponse = eWLAN_PAL_FALSE;
6649 /* for indications no need to update state from what it is right
6650 now, unless it explicitly does it in the indication handler (say
6651 for device failure ind) */
6652 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6653 }
6654
6655 /*Process the response and indication */
6656 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6657
6658 /*Lock the CB as we are about to do a state transition*/
6659 wpalMutexAcquire(&pWDICtx->wptMutex);
6660
6661 /*Transition to the expected state after the response processing
6662 - this should always be started state with the following exceptions:
6663 1. processing of a failed start response
6664 2. device failure detected while processing response
6665 3. stop response received*/
6666 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006667
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 /*Dequeue request that may have been queued while we were waiting for the
6669 response */
6670 if ( expectedResponse )
6671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006672 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006673 }
6674
6675 wpalMutexRelease(&pWDICtx->wptMutex);
6676
6677 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679
6680}/*WDI_MainRsp*/
6681
6682/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006684--------------------------------------------------------------------------*/
6685/**
6686 @brief Main FSM Stop function for state STOPPED
6687
Jeff Johnsone7245742012-09-05 17:12:55 -07006688
6689 @param pWDICtx: pointer to the WLAN DAL context
6690 pEventData: pointer to the event information structure
6691
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 @see
6693 @return Result of the function call
6694*/
6695WDI_Status
6696WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006697(
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 WDI_ControlBlockType* pWDICtx,
6699 WDI_EventInfoType* pEventData
6700)
6701{
6702 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 ----------------------------------------------------------------------*/
6705 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6706 {
6707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006708 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 pWDICtx, pEventData);
6710 return WDI_STATUS_E_FAILURE;
6711 }
6712
6713 /*We should normally not get a STOP request if we are already stopped
6714 since we should normally be stopped by the UMAC. However in some
6715 error situations we put ourselves in the stopped state without the
6716 UMAC knowing, so when we get a STOP request in this state we still
6717 process it since we need to clean up the underlying state */
6718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6719 "Processing stop request while stopped in FSM");
6720
6721 /*Return Success*/
6722 return WDI_ProcessRequest( pWDICtx, pEventData );
6723
6724}/*WDI_MainStopStopped*/
6725
6726/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006728--------------------------------------------------------------------------*/
6729/**
6730 @brief Main FSM Start function for state BUSY
6731
Jeff Johnsone7245742012-09-05 17:12:55 -07006732
6733 @param pWDICtx: pointer to the WLAN DAL context
6734 pEventData: pointer to the event information structure
6735
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 @see
6737 @return Result of the function call
6738*/
6739WDI_Status
6740WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006741(
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 WDI_ControlBlockType* pWDICtx,
6743 WDI_EventInfoType* pEventData
6744)
6745{
6746 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 ----------------------------------------------------------------------*/
6749 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6750 {
6751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006752 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 pWDICtx, pEventData);
6754 return WDI_STATUS_E_FAILURE;
6755 }
6756
6757 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006758 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 ----------------------------------------------------------------------*/
6760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6761 "WDI Busy state - queue start request");
6762
6763 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006764 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006765
6766 /*Return Success*/
6767 return WDI_STATUS_PENDING;
6768}/*WDI_MainStartBusy*/
6769
6770/**
6771 @brief Main FSM Stop function for state BUSY
6772
Jeff Johnsone7245742012-09-05 17:12:55 -07006773
6774 @param pWDICtx: pointer to the WLAN DAL context
6775 pEventData: pointer to the event information structure
6776
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 @see
6778 @return Result of the function call
6779*/
6780WDI_Status
6781WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006782(
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 WDI_ControlBlockType* pWDICtx,
6784 WDI_EventInfoType* pEventData
6785)
6786{
6787 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 ----------------------------------------------------------------------*/
6790 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6791 {
6792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006793 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 pWDICtx, pEventData);
6795 return WDI_STATUS_E_FAILURE;
6796 }
6797
6798 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 ----------------------------------------------------------------------*/
6801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6802 "WDI Busy state - queue stop request");
6803
Jeff Johnsone7245742012-09-05 17:12:55 -07006804 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006805 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006806
Jeff Johnson295189b2012-06-20 16:38:30 -07006807}/*WDI_MainStopBusy*/
6808
6809/**
6810 @brief Main FSM Request function for state BUSY
6811
Jeff Johnsone7245742012-09-05 17:12:55 -07006812
6813 @param pWDICtx: pointer to the WLAN DAL context
6814 pEventData: pointer to the event information structure
6815
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 @see
6817 @return Result of the function call
6818*/
6819WDI_Status
6820WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006821(
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 WDI_ControlBlockType* pWDICtx,
6823 WDI_EventInfoType* pEventData
6824)
6825{
6826 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006827 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006828 ----------------------------------------------------------------------*/
6829 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6830 {
6831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006832 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 pWDICtx, pEventData);
6834 return WDI_STATUS_E_FAILURE;
6835 }
6836
6837 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006838 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006839 ----------------------------------------------------------------------*/
6840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6841 "WDI Busy state - queue request %d because waiting for response %d",
6842 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6843
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006846
Jeff Johnson295189b2012-06-20 16:38:30 -07006847}/*WDI_MainReqBusy*/
6848/**
6849 @brief Main FSM Close function for state BUSY
6850
Jeff Johnsone7245742012-09-05 17:12:55 -07006851
6852 @param pWDICtx: pointer to the WLAN DAL context
6853 pEventData: pointer to the event information structure
6854
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 @see
6856 @return Result of the function call
6857*/
6858WDI_Status
6859WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006860(
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 WDI_ControlBlockType* pWDICtx,
6862 WDI_EventInfoType* pEventData
6863)
6864{
6865 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006866 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 ----------------------------------------------------------------------*/
6868 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6869 {
6870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006871 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 pWDICtx, pEventData);
6873 return WDI_STATUS_E_FAILURE;
6874 }
6875
6876 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006878 ----------------------------------------------------------------------*/
6879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6880 "WDI Busy state - queue close request");
6881
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006884
Jeff Johnson295189b2012-06-20 16:38:30 -07006885}/*WDI_MainCloseBusy*/
6886
6887/**
6888 @brief Main FSM Shutdown function for INIT & STARTED states
6889
6890
6891 @param pWDICtx: pointer to the WLAN DAL context
6892 pEventData: pointer to the event information structure
6893
6894 @see
6895 @return Result of the function call
6896*/
6897WDI_Status
6898WDI_MainShutdown
6899(
6900 WDI_ControlBlockType* pWDICtx,
6901 WDI_EventInfoType* pEventData
6902)
6903{
6904 /*--------------------------------------------------------------------
6905 Sanity Check
6906 ----------------------------------------------------------------------*/
6907 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6908 {
6909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006910 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 pWDICtx, pEventData);
6912 return WDI_STATUS_E_FAILURE;
6913 }
6914
6915 /*State at this point is BUSY - because we enter this state before posting
6916 an event to the FSM in order to prevent potential race conditions*/
6917
6918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6919 "Processing shutdown request in FSM");
6920
6921 /*Return Success*/
6922 return WDI_ProcessRequest( pWDICtx, pEventData );
6923
6924}/*WDI_MainShutdown*/
6925
6926/**
6927 @brief Main FSM Shutdown function for BUSY state
6928
6929
6930 @param pWDICtx: pointer to the WLAN DAL context
6931 pEventData: pointer to the event information structure
6932
6933 @see
6934 @return Result of the function call
6935*/
6936WDI_Status
6937WDI_MainShutdownBusy
6938(
6939 WDI_ControlBlockType* pWDICtx,
6940 WDI_EventInfoType* pEventData
6941)
6942{
6943 /*--------------------------------------------------------------------
6944 Sanity Check
6945 ----------------------------------------------------------------------*/
6946 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6947 {
6948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006949 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 pWDICtx, pEventData);
6951 return WDI_STATUS_E_FAILURE;
6952 }
6953
6954 /* If you are waiting for a HAL response at this stage, you are not
6955 * going to get it. Riva is already shutdown/crashed.
6956 */
6957 wpalTimerStop(&gWDICb.wptResponseTimer);
6958
6959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6960 "Processing shutdown request in FSM: Busy state ");
6961
6962 return WDI_ProcessRequest( pWDICtx, pEventData );
6963
6964}/*WDI_MainShutdownBusy*/
6965
6966
Jeff Johnsone7245742012-09-05 17:12:55 -07006967/*=======================================================================
6968
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006970
Jeff Johnson295189b2012-06-20 16:38:30 -07006971*=======================================================================*/
6972
6973/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006975========================================================================*/
6976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
6980 @param pWDICtx: pointer to the WLAN DAL context
6981 pEventData: pointer to the event information structure
6982
Jeff Johnson295189b2012-06-20 16:38:30 -07006983 @see
6984 @return Result of the function call
6985*/
6986WDI_Status
6987WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006988(
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 WDI_ControlBlockType* pWDICtx,
6990 WDI_EventInfoType* pEventData
6991)
6992{
6993 WDI_StartReqParamsType* pwdiStartParams = NULL;
6994 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 wpt_uint16 usDataOffset = 0;
6997 wpt_uint16 usSendSize = 0;
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 tHalMacStartReqMsg halStartReq;
7000 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7002
7003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 -------------------------------------------------------------------------*/
7006 if (( NULL == pEventData ) ||
7007 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7008 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7009 {
7010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 }
7015
7016 /*-----------------------------------------------------------------------
7017 Get message buffer
7018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 pwdiStartParams->usConfigBufferLen;
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 usLen,
7024 &pSendBuffer, &usDataOffset, &usSendSize))||
7025 ( usSendSize < (usDataOffset + usLen )))
7026 {
7027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007028 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 pEventData, pwdiStartParams, wdiStartRspCb);
7030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 }
7033
7034 /*-----------------------------------------------------------------------
7035 Fill in the message
7036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 halStartReq.startReqParams.driverType =
7038 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 halStartReq.startReqParams.uConfigBufferLen =
7041 pwdiStartParams->usConfigBufferLen;
7042 wpalMemoryCopy( pSendBuffer+usDataOffset,
7043 &halStartReq.startReqParams,
7044 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 usDataOffset += sizeof(halStartReq.startReqParams);
7047 wpalMemoryCopy( pSendBuffer+usDataOffset,
7048 pwdiStartParams->pConfigBuffer,
7049 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053
7054 /*Save Low Level Ind CB and associated user data - it will be used further
7055 on when an indication is coming from the lower MAC*/
7056 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007058
Jeff Johnsone7245742012-09-05 17:12:55 -07007059 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7065
Jeff Johnsone7245742012-09-05 17:12:55 -07007066
Jeff Johnson295189b2012-06-20 16:38:30 -07007067}/*WDI_ProcessStartReq*/
7068
7069/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007072
7073 @param pWDICtx: pointer to the WLAN DAL context
7074 pEventData: pointer to the event information structure
7075
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 @see
7077 @return Result of the function call
7078*/
7079WDI_Status
7080WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007081(
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 WDI_ControlBlockType* pWDICtx,
7083 WDI_EventInfoType* pEventData
7084)
7085{
7086 WDI_StopReqParamsType* pwdiStopParams = NULL;
7087 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 wpt_uint16 usDataOffset = 0;
7090 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007091 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7094
7095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 -------------------------------------------------------------------------*/
7098 if (( NULL == pEventData ) ||
7099 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7100 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7101 {
7102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007105 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 }
7107
7108 /*-----------------------------------------------------------------------
7109 Get message buffer
7110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 sizeof(halStopReq.stopReqParams),
7113 &pSendBuffer, &usDataOffset, &usSendSize))||
7114 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7115 {
7116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007117 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 pEventData, pwdiStopParams, wdiStopRspCb);
7119 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007120 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 }
7122
7123 /*-----------------------------------------------------------------------
7124 Fill in the message
7125 -----------------------------------------------------------------------*/
7126 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7127 pwdiStopParams->wdiStopReason);
7128
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 wpalMemoryCopy( pSendBuffer+usDataOffset,
7130 &halStopReq.stopReqParams,
7131 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007132
7133 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007135
7136 /*! TO DO: stop the data services */
7137 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7138 {
7139 /*Stop the STA Table !UT- check this logic again
7140 It is safer to do it here than on the response - because a stop is imminent*/
7141 WDI_STATableStop(pWDICtx);
7142
7143 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007144 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7145 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 {
7147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7148 "WDI Init failed to reset power state event");
7149
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007151 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 }
7153 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007154 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7155 if( eWLAN_PAL_STATUS_SUCCESS != status )
7156 {
7157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007158 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007159 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007160 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007161 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007165 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7166 WDI_SET_POWER_STATE_TIMEOUT);
7167 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 {
7169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7170 "WDI Init failed to wait on an event");
7171
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007173 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 }
7175 }
7176
7177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7182
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007183fail:
7184 // Release the message buffer so we don't leak
7185 wpalMemoryFree(pSendBuffer);
7186
7187failRequest:
7188 //WDA should have failure check to avoid the memory leak
7189 return WDI_STATUS_E_FAILURE;
7190
Jeff Johnson295189b2012-06-20 16:38:30 -07007191}/*WDI_ProcessStopReq*/
7192
7193/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007196
7197 @param pWDICtx: pointer to the WLAN DAL context
7198 pEventData: pointer to the event information structure
7199
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 @see
7201 @return Result of the function call
7202*/
7203WDI_Status
7204WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007205(
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 WDI_ControlBlockType* pWDICtx,
7207 WDI_EventInfoType* pEventData
7208)
7209{
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7212
7213 /*Lock control block for cleanup*/
7214 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007215
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 /*Clear all pending request*/
7217 WDI_ClearPendingRequests(pWDICtx);
7218
7219 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007221
7222 /* Close Data transport*/
7223 /* FTM mode does not open Data Path */
7224 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7225 {
7226 WDTS_Close(pWDICtx);
7227 }
7228
7229 /*Close the STA Table !UT- check this logic again*/
7230 WDI_STATableClose(pWDICtx);
7231
7232 /*close the PAL */
7233 wptStatus = wpalClose(pWDICtx->pPALContext);
7234 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7235 {
7236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7237 "Failed to wpal Close %d", wptStatus);
7238 WDI_ASSERT(0);
7239 }
7240
7241 /*Transition back to init state*/
7242 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7243
7244 wpalMutexRelease(&pWDICtx->wptMutex);
7245
7246 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007248
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007250}/*WDI_ProcessCloseReq*/
7251
7252
7253/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007255===========================================================================*/
7256
7257/**
7258 @brief Process Init Scan Request function (called when Main FSM
7259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007260
7261 @param pWDICtx: pointer to the WLAN DAL context
7262 pEventData: pointer to the event information structure
7263
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 @see
7265 @return Result of the function call
7266*/
7267WDI_Status
7268WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007269(
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 WDI_ControlBlockType* pWDICtx,
7271 WDI_EventInfoType* pEventData
7272)
7273{
7274 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7275 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 wpt_uint16 usDataOffset = 0;
7278 wpt_uint16 usSendSize = 0;
7279 wpt_uint8 i = 0;
7280
7281 tHalInitScanReqMsg halInitScanReqMsg;
7282
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 * It shold be removed once host and riva changes are in sync*/
7285 tHalInitScanConReqMsg halInitScanConReqMsg;
7286
7287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7288
7289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 -------------------------------------------------------------------------*/
7292 if (( NULL == pEventData ) ||
7293 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7294 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7295 {
7296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 }
7301
7302#if 0
7303 wpalMutexAcquire(&pWDICtx->wptMutex);
7304 /*-----------------------------------------------------------------------
7305 Check to see if SCAN is already in progress - if so reject the req
7306 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 -----------------------------------------------------------------------*/
7309 if ( pWDICtx->bScanInProgress )
7310 {
7311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7312 "Scan is already in progress - subsequent scan is not allowed"
7313 " until the first scan completes");
7314
7315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
7318
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7320 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
7322 wpalMutexRelease(&pWDICtx->wptMutex);
7323#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007324 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 * It shold be removed once host and riva changes are in sync*/
7328 /*-----------------------------------------------------------------------
7329 Get message buffer
7330 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 sizeof(halInitScanConReqMsg.initScanParams),
7333 &pSendBuffer, &usDataOffset, &usSendSize))||
7334 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7335 {
7336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007337 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 }
7342
7343
7344 /*-----------------------------------------------------------------------
7345 Fill in the message
7346 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7349
7350 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7351 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7352
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7359
7360 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7361 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7362
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7364 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7368
7369 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7370 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7373 }
7374
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 wpalMemoryCopy( pSendBuffer+usDataOffset,
7376 &halInitScanConReqMsg.initScanParams,
7377 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 }
7379 else
7380 {
7381 /*-----------------------------------------------------------------------
7382 Get message buffer
7383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 sizeof(halInitScanReqMsg.initScanParams),
7386 &pSendBuffer, &usDataOffset, &usSendSize))||
7387 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7388 {
7389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007390 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396
7397 /*-----------------------------------------------------------------------
7398 Fill in the message
7399 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7402
7403 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7404 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7405
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7412
7413 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7414 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7418
7419 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7420 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7423 }
7424
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 wpalMemoryCopy( pSendBuffer+usDataOffset,
7426 &halInitScanReqMsg.initScanParams,
7427 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 }
7429
7430 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7438
7439}/*WDI_ProcessInitScanReq*/
7440
7441/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007444
7445 @param pWDICtx: pointer to the WLAN DAL context
7446 pEventData: pointer to the event information structure
7447
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 @see
7449 @return Result of the function call
7450*/
7451WDI_Status
7452WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007453(
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 WDI_ControlBlockType* pWDICtx,
7455 WDI_EventInfoType* pEventData
7456)
7457{
7458 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7459 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 wpt_uint16 usDataOffset = 0;
7462 wpt_uint16 usSendSize = 0;
7463
Jeff Johnsone7245742012-09-05 17:12:55 -07007464 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7466
7467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 -------------------------------------------------------------------------*/
7470 if (( NULL == pEventData ) ||
7471 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7472 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7473 {
7474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 }
7479
7480#if 0
7481 wpalMutexAcquire(&pWDICtx->wptMutex);
7482 /*-----------------------------------------------------------------------
7483 Check to see if SCAN is already in progress - start scan is only
7484 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7489 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7490 {
7491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7492 "Scan start not allowed in this state %d %d",
7493 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007494
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 }
7498
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500
7501 wpalMutexRelease(&pWDICtx->wptMutex);
7502#endif
7503
7504 /*-----------------------------------------------------------------------
7505 Get message buffer
7506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 sizeof(halStartScanReqMsg.startScanParams),
7509 &pSendBuffer, &usDataOffset, &usSendSize))||
7510 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7511 {
7512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007513 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 }
7518
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 wpalMemoryCopy( pSendBuffer+usDataOffset,
7522 &halStartScanReqMsg.startScanParams,
7523 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007524
7525 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527
7528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7533}/*WDI_ProcessStartScanReq*/
7534
7535
7536/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007539
7540 @param pWDICtx: pointer to the WLAN DAL context
7541 pEventData: pointer to the event information structure
7542
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 @see
7544 @return Result of the function call
7545*/
7546WDI_Status
7547WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007548(
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 WDI_ControlBlockType* pWDICtx,
7550 WDI_EventInfoType* pEventData
7551)
7552{
7553 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7554 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 wpt_uint16 usDataOffset = 0;
7557 wpt_uint16 usSendSize = 0;
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7561
7562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 -------------------------------------------------------------------------*/
7565 if (( NULL == pEventData ) ||
7566 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7567 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7568 {
7569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 }
7574
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7576 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 * forwarded to HAL and result in hang*/
7578#if 0
7579 wpalMutexAcquire(&pWDICtx->wptMutex);
7580 /*-----------------------------------------------------------------------
7581 Check to see if SCAN is already in progress - end scan is only
7582 allowed when a scan is ongoing and the state of the scan procedure
7583 is started
7584 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7587 {
7588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7589 "End start not allowed in this state %d %d",
7590 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007591
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 }
7595
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597
7598 wpalMutexRelease(&pWDICtx->wptMutex);
7599#endif
7600
7601 /*-----------------------------------------------------------------------
7602 Get message buffer
7603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 sizeof(halEndScanReqMsg.endScanParams),
7606 &pSendBuffer, &usDataOffset, &usSendSize))||
7607 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7608 {
7609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007610 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 }
7615
7616 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7617
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 wpalMemoryCopy( pSendBuffer+usDataOffset,
7619 &halEndScanReqMsg.endScanParams,
7620 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007621
7622 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007624
7625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7630}/*WDI_ProcessEndScanReq*/
7631
7632
7633/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007636
7637 @param pWDICtx: pointer to the WLAN DAL context
7638 pEventData: pointer to the event information structure
7639
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 @see
7641 @return Result of the function call
7642*/
7643WDI_Status
7644WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007645(
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 WDI_ControlBlockType* pWDICtx,
7647 WDI_EventInfoType* pEventData
7648)
7649{
7650 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7651 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 wpt_uint16 usDataOffset = 0;
7654 wpt_uint16 usSendSize = 0;
7655 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007656 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7659
7660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 -------------------------------------------------------------------------*/
7663 if (( NULL == pEventData ) ||
7664 ( NULL == pEventData->pEventData) ||
7665 ( NULL == pEventData->pCBfnc))
7666 {
7667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 }
7672
7673 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7674 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7676 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 * forwarded to HAL and result in hang*/
7678#if 0
7679 wpalMutexAcquire(&pWDICtx->wptMutex);
7680 /*-----------------------------------------------------------------------
7681 Check to see if SCAN is already in progress
7682 Finish scan gets invoked any scan states. ie. abort scan
7683 It should be allowed in any states.
7684 -----------------------------------------------------------------------*/
7685 if ( !pWDICtx->bScanInProgress )
7686 {
7687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7688 "Finish start not allowed in this state %d",
7689 pWDICtx->bScanInProgress );
7690
7691 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 }
7694
7695 /*-----------------------------------------------------------------------
7696 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7700 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 wpalMutexRelease(&pWDICtx->wptMutex);
7702#endif
7703
7704 if ( pWDICtx->bInBmps )
7705 {
7706 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007707 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7708 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7709 {
7710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007711 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007712 WDI_ASSERT(0);
7713 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 }
7715
7716 /*-----------------------------------------------------------------------
7717 Get message buffer
7718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 sizeof(halFinishScanReqMsg.finishScanParams),
7721 &pSendBuffer, &usDataOffset, &usSendSize))||
7722 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7723 {
7724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007725 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 }
7730
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7736
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7739
7740 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7741 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7749
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7752
7753 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7757 }
7758
7759 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7760 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7761
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 wpalMemoryCopy( pSendBuffer+usDataOffset,
7763 &halFinishScanReqMsg.finishScanParams,
7764 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007765
7766 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768
7769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7774}/*WDI_ProcessFinishScanReq*/
7775
7776
7777/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007779==========================================================================*/
7780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 @brief Process BSS Join for a given Session
7782
7783 @param pWDICtx: pointer to the WLAN DAL context
7784 pEventData: pointer to the event information structure
7785
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 @see
7787 @return Result of the function call
7788*/
7789WDI_Status
7790WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007791(
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 WDI_ControlBlockType* pWDICtx,
7793 WDI_JoinReqParamsType* pwdiJoinParams,
7794 WDI_JoinRspCb wdiJoinRspCb,
7795 void* pUserData
7796)
7797{
7798 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 wpt_uint16 usDataOffset = 0;
7801 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7806
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007807 wpalMutexAcquire(&pWDICtx->wptMutex);
7808
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 /*------------------------------------------------------------------------
7810 Check to see if we have any session with this BSSID already stored, we
7811 should not
7812 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7814 pwdiJoinParams->wdiReqInfo.macBSSID,
7815 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
7817 if ( NULL != pBSSSes )
7818 {
7819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007820 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7821 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007822
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007823 /*reset the bAssociationInProgress otherwise the next
7824 *join request will be queued*/
7825 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7826 wpalMutexRelease(&pWDICtx->wptMutex);
7827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 }
7829
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 if ( NULL == pBSSSes )
7835 {
7836
7837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7838 "DAL has no free sessions - cannot run another join");
7839
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007840 /*reset the bAssociationInProgress otherwise the next
7841 *join request will be queued*/
7842 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 }
7846
7847 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7849 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 WDI_MAC_ADDR_LEN);
7851
7852 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 wpalMutexRelease(&pWDICtx->wptMutex);
7857
7858 /*-----------------------------------------------------------------------
7859 Get message buffer
7860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 sizeof(halJoinReqMsg.joinReqParams),
7863 &pSendBuffer, &usDataOffset, &usSendSize))||
7864 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7865 {
7866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007867 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 pUserData, pwdiJoinParams, wdiJoinRspCb);
7869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 }
7872
7873 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007875
7876 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 pwdiJoinParams->wdiReqInfo.macSTASelf,
7878 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007879
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7882
7883 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7884
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007885#ifdef WLAN_FEATURE_VOWIFI
7886 halJoinReqMsg.joinReqParams.maxTxPower =
7887 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7888#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7891#endif
7892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7895 wdiSecondaryChannelOffset);
7896
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 wpalMemoryCopy( pSendBuffer+usDataOffset,
7898 &halJoinReqMsg.joinReqParams,
7899 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007900
7901 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903
7904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7908 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007909
7910}/*WDI_ProcessBSSSessionJoinReq*/
7911
7912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007915
7916 @param pWDICtx: pointer to the WLAN DAL context
7917 pEventData: pointer to the event information structure
7918
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 @see
7920 @return Result of the function call
7921*/
7922WDI_Status
7923WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007924(
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 WDI_ControlBlockType* pWDICtx,
7926 WDI_EventInfoType* pEventData
7927)
7928{
7929 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7930 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7931 WDI_JoinRspCb wdiJoinRspCb = NULL;
7932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7933
7934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 -------------------------------------------------------------------------*/
7937 if (( NULL == pEventData ) ||
7938 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7939 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7940 {
7941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007946
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 /*-------------------------------------------------------------------------
7948 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 -------------------------------------------------------------------------*/
7951 wpalMutexAcquire(&pWDICtx->wptMutex);
7952
7953 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7954 {
7955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7956 "Association is currently in progress, queueing new join req");
7957
7958 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 pwdiJoinParams->wdiReqInfo.macBSSID);
7961
7962 wpalMutexRelease(&pWDICtx->wptMutex);
7963
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 }
7966
7967 /*Starting a new association */
7968 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7969 wpalMutexRelease(&pWDICtx->wptMutex);
7970
7971 /*Process the Join Request*/
7972 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7973 wdiJoinRspCb,pEventData->pUserData);
7974
7975}/*WDI_ProcessJoinReq*/
7976
7977
7978/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007981
7982 @param pWDICtx: pointer to the WLAN DAL context
7983 pEventData: pointer to the event information structure
7984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 @see
7986 @return Result of the function call
7987*/
7988WDI_Status
7989WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007990(
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 WDI_ControlBlockType* pWDICtx,
7992 WDI_EventInfoType* pEventData
7993)
7994{
7995 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7996 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 wpt_uint16 uMsgSize = 0;
8000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 wpt_uint16 usDataOffset = 0;
8002 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8007
8008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 -------------------------------------------------------------------------*/
8011 if (( NULL == pEventData ) ||
8012 ( NULL == pEventData->pEventData ) ||
8013 ( NULL == pEventData->pCBfnc ))
8014 {
8015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 }
8020
8021 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8022 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8023 /*-------------------------------------------------------------------------
8024 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 -------------------------------------------------------------------------*/
8027 wpalMutexAcquire(&pWDICtx->wptMutex);
8028
8029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8033 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8034 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008035
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 {
8038#ifdef WLAN_FEATURE_VOWIFI_11R
8039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 if ( NULL == pBSSSes )
8044 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008045
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8047 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008052
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8055 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8061#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 * Request in case of IBSS*/
8064 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8065 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8066 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8067 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8068 {
8069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 if ( NULL == pBSSSes )
8074 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008075
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8077 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008078
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008082
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8085 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8091 }
8092 else
8093 {
8094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8096 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8097 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8098
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 /* for IBSS testing */
8100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 }
8103#endif
8104 }
8105
8106 /*------------------------------------------------------------------------
8107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 ------------------------------------------------------------------------*/
8110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8111 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8113 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8114 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8115 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008118
8119 wpalMutexRelease(&pWDICtx->wptMutex);
8120
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 }
8123
8124 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8126 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 sizeof(pWDICtx->wdiCachedConfigBssReq));
8128
8129 wpalMutexRelease(&pWDICtx->wptMutex);
8130
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8132#ifdef WLAN_FEATURE_11AC
8133 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008134 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 else
8136#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008137 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008138
8139 /*-----------------------------------------------------------------------
8140 Get message buffer
8141 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8144 ( usSendSize < (usDataOffset + uMsgSize )))
8145 {
8146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008147 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 }
8152
8153 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008154#ifdef WLAN_FEATURE_11AC
8155 if (WDI_getFwWlanFeatCaps(DOT11AC))
8156 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8157 &pwdiConfigBSSParams->wdiReqInfo);
8158 else
8159#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 &pwdiConfigBSSParams->wdiReqInfo);
8162
8163 /* Need to fill in the STA Index to invalid, since at this point we have not
8164 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8169
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008170#ifdef WLAN_FEATURE_11AC
8171 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8172 wpalMemoryCopy( pSendBuffer+usDataOffset,
8173 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8174 uMsgSize);
8175 }else
8176#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008177 {
8178 if ( uMsgSize <= sizeof(tConfigBssParams) )
8179 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008180 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008181 &halConfigBssReqMsg.uBssParams.configBssParams,
8182 uMsgSize);
8183 }
8184 else
8185 {
8186 return WDI_STATUS_E_FAILURE;
8187 }
8188 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
8193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8197 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 WDI_CONFIG_BSS_RESP);
8199
8200}/*WDI_ProcessConfigBSSReq*/
8201
8202
8203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008206
8207 @param pWDICtx: pointer to the WLAN DAL context
8208 pEventData: pointer to the event information structure
8209
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 @see
8211 @return Result of the function call
8212*/
8213WDI_Status
8214WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008215(
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 WDI_ControlBlockType* pWDICtx,
8217 WDI_EventInfoType* pEventData
8218)
8219{
8220 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8221 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 wpt_uint16 usDataOffset = 0;
8226 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8231
8232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 -------------------------------------------------------------------------*/
8235 if (( NULL == pEventData ) ||
8236 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8237 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8238 {
8239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 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
8245 /*-------------------------------------------------------------------------
8246 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 -------------------------------------------------------------------------*/
8249 wpalMutexAcquire(&pWDICtx->wptMutex);
8250
8251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8255 pwdiDelBSSParams->ucBssIdx,
8256 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008257
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 {
8260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 "%s: BSS does not yet exist. ucBssIdx %d",
8262 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008263
8264 wpalMutexRelease(&pWDICtx->wptMutex);
8265
8266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008268
8269 /*------------------------------------------------------------------------
8270 Check if this BSS is being currently processed or queued,
8271 if queued - queue the new request as well
8272 ------------------------------------------------------------------------*/
8273 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8276 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8277 __func__, pwdiDelBSSParams->ucBssIdx);
8278
8279 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8280
8281 wpalMutexRelease(&pWDICtx->wptMutex);
8282
8283 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008285
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 /*-----------------------------------------------------------------------
8287 If we receive a Del BSS request for an association that is already in
8288 progress, it indicates that the assoc has failed => we no longer have
8289 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 -----------------------------------------------------------------------*/
8292 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8293 {
8294 /*We can switch to false here because even if a subsequent Join comes in
8295 it will only be processed when DAL transitions out of BUSY state which
8296 happens when the Del BSS request comes */
8297 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8298
8299 /*Former association is complete - prepare next pending assoc for
8300 processing */
8301 WDI_DequeueAssocRequest(pWDICtx);
8302 }
8303
8304 wpalMutexRelease(&pWDICtx->wptMutex);
8305 /*-----------------------------------------------------------------------
8306 Get message buffer
8307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 sizeof(halBssReqMsg.deleteBssParams),
8310 &pSendBuffer, &usDataOffset, &usSendSize))||
8311 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8312 {
8313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008314 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 }
8319
8320 /*Fill in the message request structure*/
8321
8322 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008323 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 wpalMemoryCopy( pSendBuffer+usDataOffset,
8326 &halBssReqMsg.deleteBssParams,
8327 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
Jeff Johnsone7245742012-09-05 17:12:55 -07008332
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8338
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
Jeff Johnson295189b2012-06-20 16:38:30 -07008340}/*WDI_ProcessDelBSSReq*/
8341
8342/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008345
8346 @param pWDICtx: pointer to the WLAN DAL context
8347 pEventData: pointer to the event information structure
8348
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 @see
8350 @return Result of the function call
8351*/
8352WDI_Status
8353WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008354(
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 WDI_ControlBlockType* pWDICtx,
8356 WDI_EventInfoType* pEventData
8357)
8358{
8359 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8360 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 wpt_uint16 usDataOffset = 0;
8365 wpt_uint16 usSendSize = 0;
8366 wpt_uint16 uMsgSize = 0;
8367 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8372
8373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 -------------------------------------------------------------------------*/
8376 if (( NULL == pEventData ) ||
8377 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8378 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8379 {
8380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 }
8385
8386 /*-------------------------------------------------------------------------
8387 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 -------------------------------------------------------------------------*/
8390 wpalMutexAcquire(&pWDICtx->wptMutex);
8391
8392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8396 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8397 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008398
8399 if ( NULL == pBSSSes )
8400 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8402 "%s: Association sequence for this BSS does not yet exist - "
8403 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8404 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008405
8406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410 /*------------------------------------------------------------------------
8411 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 ------------------------------------------------------------------------*/
8414 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8415 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8417 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8418 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008419
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008421
8422 wpalMutexRelease(&pWDICtx->wptMutex);
8423
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 }
8426
8427 /*-----------------------------------------------------------------------
8428 If Post Assoc was not yet received - the current association must
8429 be in progress
8430 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8433 {
8434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8435 "Association sequence for this BSS association no longer in "
8436 "progress - not allowed");
8437
8438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 }
8441
8442 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 -----------------------------------------------------------------------*/
8445 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8448 "Post Assoc not allowed before JOIN - failing request");
8449
8450 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 }
8453
8454 wpalMutexRelease(&pWDICtx->wptMutex);
8455
8456 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8457 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8458 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8463 ( usSendSize < (usDataOffset + uMsgSize )))
8464 {
8465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008466 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 }
8471
8472 /*Copy the STA parameters */
8473 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8474 &pwdiPostAssocParams->wdiSTAParams );
8475
8476 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_STATableFindStaidByAddr(pWDICtx,
8479 pwdiPostAssocParams->wdiSTAParams.macSTA,
8480 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8481 {
8482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008483 MAC_ADDRESS_STR
8484 ": This station does not exist in the WDI Station Table",
8485 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008487 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 }
8490
8491 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pBSSSes->ucBSSIdx;
8494
8495 /*Copy the BSS parameters */
8496 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8497 &pwdiPostAssocParams->wdiBSSParams);
8498
8499 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 WDI_STATableFindStaidByAddr(pWDICtx,
8502 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 {
8505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008506 MAC_ADDRESS_STR
8507 ": This station does not exist in the WDI Station Table",
8508 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008510 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 }
8513
8514 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 pBSSSes->ucBSSIdx;
8517
Jeff Johnsone7245742012-09-05 17:12:55 -07008518
8519 wpalMemoryCopy( pSendBuffer+usDataOffset,
8520 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8521 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008522
8523 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8524
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8526 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8527 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008532
Jeff Johnsone7245742012-09-05 17:12:55 -07008533
8534 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008537
8538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544
Jeff Johnson295189b2012-06-20 16:38:30 -07008545}/*WDI_ProcessPostAssocReq*/
8546
8547/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008550
8551 @param pWDICtx: pointer to the WLAN DAL context
8552 pEventData: pointer to the event information structure
8553
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 @see
8555 @return Result of the function call
8556*/
8557WDI_Status
8558WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008559(
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 WDI_ControlBlockType* pWDICtx,
8561 WDI_EventInfoType* pEventData
8562)
8563{
8564 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8565 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 wpt_uint16 usDataOffset = 0;
8570 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8573
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8576
8577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 -------------------------------------------------------------------------*/
8580 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8581 ( NULL == pEventData->pCBfnc ))
8582 {
8583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 }
8588
8589 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8590 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8591 /*-------------------------------------------------------------------------
8592 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 -------------------------------------------------------------------------*/
8595 wpalMutexAcquire(&pWDICtx->wptMutex);
8596
8597 /*------------------------------------------------------------------------
8598 Find the BSS for which the request is made and identify WDI session
8599 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8601 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 &macBSSID))
8603 {
8604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008605 "This station does not exist in the WDI Station Table %d",
8606 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 }
8610
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8612 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8615 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008617
8618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 }
8621
8622 /*------------------------------------------------------------------------
8623 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 ------------------------------------------------------------------------*/
8626 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8627 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8629 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8630 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008631
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 }
8636
8637 wpalMutexRelease(&pWDICtx->wptMutex);
8638 /*-----------------------------------------------------------------------
8639 Get message buffer
8640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 sizeof(halDelStaReqMsg.delStaParams),
8643 &pSendBuffer, &usDataOffset, &usSendSize))||
8644 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8645 {
8646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008647 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
8652
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8654 wpalMemoryCopy( pSendBuffer+usDataOffset,
8655 &halDelStaReqMsg.delStaParams,
8656 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008657
8658 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008660
8661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8666
8667}/*WDI_ProcessDelSTAReq*/
8668
8669
8670/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008672==========================================================================*/
8673/**
8674 @brief Process Set BSS Key Request function (called when Main FSM
8675 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008676
8677 @param pWDICtx: pointer to the WLAN DAL context
8678 pEventData: pointer to the event information structure
8679
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 @see
8681 @return Result of the function call
8682*/
8683WDI_Status
8684WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008685(
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WDI_ControlBlockType* pWDICtx,
8687 WDI_EventInfoType* pEventData
8688)
8689{
8690 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8691 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 wpt_uint16 usDataOffset = 0;
8696 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8699 wpt_uint8 keyIndex = 0;
8700
8701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8702
8703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 -------------------------------------------------------------------------*/
8706 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8707 ( NULL == pEventData->pCBfnc ))
8708 {
8709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 }
8714
8715 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8716 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8717 /*-------------------------------------------------------------------------
8718 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 -------------------------------------------------------------------------*/
8721 wpalMutexAcquire(&pWDICtx->wptMutex);
8722
8723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8727 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8728 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008729
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 {
8732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8734 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008735
8736 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 }
8739
8740 /*------------------------------------------------------------------------
8741 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 ------------------------------------------------------------------------*/
8744 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8745 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8747 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8748 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008749
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 }
8754
8755
8756 wpalMutexRelease(&pWDICtx->wptMutex);
8757 /*-----------------------------------------------------------------------
8758 Get message buffer
8759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8762 &pSendBuffer, &usDataOffset, &usSendSize))||
8763 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8764 {
8765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008766 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 }
8771
8772 /*-----------------------------------------------------------------------
8773 Copy the Key parameters into the HAL message
8774 -----------------------------------------------------------------------*/
8775
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8780
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8783
8784 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8785 keyIndex++)
8786 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8789 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8790 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8791 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8792 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8793 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8800 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 WDI_MAX_KEY_LENGTH);
8803 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008804
8805 wpalMemoryCopy( pSendBuffer+usDataOffset,
8806 &halSetBssKeyReqMsg.setBssKeyParams,
8807 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008808
8809 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
8812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8816 wdiSetBSSKeyRspCb, pEventData->pUserData,
8817 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008818
8819}/*WDI_ProcessSetBssKeyReq*/
8820
8821/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008824
8825 @param pWDICtx: pointer to the WLAN DAL context
8826 pEventData: pointer to the event information structure
8827
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 @see
8829 @return Result of the function call
8830*/
8831WDI_Status
8832WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008833(
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 WDI_ControlBlockType* pWDICtx,
8835 WDI_EventInfoType* pEventData
8836)
8837{
8838 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8839 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 wpt_uint16 usDataOffset = 0;
8844 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8848
8849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 -------------------------------------------------------------------------*/
8852 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8853 ( NULL == pEventData->pCBfnc ))
8854 {
8855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 }
8860
8861 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8862 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8863 /*-------------------------------------------------------------------------
8864 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 -------------------------------------------------------------------------*/
8867 wpalMutexAcquire(&pWDICtx->wptMutex);
8868
8869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8873 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8874 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008875
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 {
8878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8880 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881
8882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 }
8885
8886 /*------------------------------------------------------------------------
8887 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 ------------------------------------------------------------------------*/
8890 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8891 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8893 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8894 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008895
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 }
8900
8901
8902 wpalMutexRelease(&pWDICtx->wptMutex);
8903
8904 /*-----------------------------------------------------------------------
8905 Get message buffer
8906 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8909 &pSendBuffer, &usDataOffset, &usSendSize))||
8910 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8911 {
8912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008913 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 }
8918 /*-----------------------------------------------------------------------
8919 Copy the Key parameters into the HAL message
8920 -----------------------------------------------------------------------*/
8921 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8922
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8925
8926 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8927
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8930
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 wpalMemoryCopy( pSendBuffer+usDataOffset,
8932 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8933 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008934
8935 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937
8938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008944}/*WDI_ProcessRemoveBssKeyReq*/
8945
8946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008949
8950 @param pWDICtx: pointer to the WLAN DAL context
8951 pEventData: pointer to the event information structure
8952
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 @see
8954 @return Result of the function call
8955*/
8956WDI_Status
8957WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008958(
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 WDI_ControlBlockType* pWDICtx,
8960 WDI_EventInfoType* pEventData
8961)
8962{
8963 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8964 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8965 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 wpt_uint16 usDataOffset = 0;
8968 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8973 wpt_uint8 keyIndex = 0;
8974
8975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8976
8977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 -------------------------------------------------------------------------*/
8980 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8981 ( NULL == pEventData->pCBfnc ))
8982 {
8983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 }
8988
8989 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8990 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8991 /*-------------------------------------------------------------------------
8992 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 -------------------------------------------------------------------------*/
8995 wpalMutexAcquire(&pWDICtx->wptMutex);
8996
8997 /*------------------------------------------------------------------------
8998 Find the BSS for which the request is made and identify WDI session
8999 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9001 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 &macBSSID))
9003 {
9004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009005 "This station does not exist in the WDI Station Table %d",
9006 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 }
9010
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9012 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9015 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009017
9018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009021
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 /*------------------------------------------------------------------------
9023 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 ------------------------------------------------------------------------*/
9026 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9027 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9029 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9030 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009031
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037
9038 wpalMutexRelease(&pWDICtx->wptMutex);
9039 /*-----------------------------------------------------------------------
9040 Get message buffer
9041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9044 &pSendBuffer, &usDataOffset, &usSendSize))||
9045 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9046 {
9047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009048 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 }
9053 /*-----------------------------------------------------------------------
9054 Copy the STA Key parameters into the HAL message
9055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9061
9062 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9063
9064 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9065
9066 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9067
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9069 keyIndex++)
9070 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9073 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9074 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9075 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9076 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9077 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9084 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_MAX_KEY_LENGTH);
9087 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009088
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 wpalMemoryCopy( pSendBuffer+usDataOffset,
9090 &halSetStaKeyReqMsg.setStaKeyParams,
9091 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009092
9093 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009095
9096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9100 wdiSetSTAKeyRspCb, pEventData->pUserData,
9101 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102
9103}/*WDI_ProcessSetSTAKeyReq*/
9104
9105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009108
9109 @param pWDICtx: pointer to the WLAN DAL context
9110 pEventData: pointer to the event information structure
9111
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 @see
9113 @return Result of the function call
9114*/
9115WDI_Status
9116WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009117(
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_ControlBlockType* pWDICtx,
9119 WDI_EventInfoType* pEventData
9120)
9121{
9122 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9123 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9124 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wpt_uint16 usDataOffset = 0;
9127 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wpt_macAddr macBSSID;
9130 wpt_uint8 ucCurrentBSSSesIdx;
9131 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9133
9134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 -------------------------------------------------------------------------*/
9137 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9138 ( NULL == pEventData->pCBfnc ))
9139 {
9140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9147 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9148 /*-------------------------------------------------------------------------
9149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 -------------------------------------------------------------------------*/
9152 wpalMutexAcquire(&pWDICtx->wptMutex);
9153
9154 /*------------------------------------------------------------------------
9155 Find the BSS for which the request is made and identify WDI session
9156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9158 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 &macBSSID))
9160 {
9161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009162 "This station does not exist in the WDI Station Table %d",
9163 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 }
9167
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9169 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9172 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
9175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009178
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*------------------------------------------------------------------------
9180 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 ------------------------------------------------------------------------*/
9183 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9184 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9186 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9187 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009188
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 }
9193
9194
9195
9196 wpalMutexRelease(&pWDICtx->wptMutex);
9197 /*-----------------------------------------------------------------------
9198 Get message buffer
9199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9202 &pSendBuffer, &usDataOffset, &usSendSize))||
9203 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9204 {
9205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009206 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 }
9211
9212 /*-----------------------------------------------------------------------
9213 Copy the Key parameters into the HAL message
9214 -----------------------------------------------------------------------*/
9215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9221
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 wpalMemoryCopy( pSendBuffer+usDataOffset,
9229 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9230 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
9232 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234
9235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009241
9242}/*WDI_ProcessRemoveSTAKeyReq*/
9243
9244/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009247
9248 @param pWDICtx: pointer to the WLAN DAL context
9249 pEventData: pointer to the event information structure
9250
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 @see
9252 @return Result of the function call
9253*/
9254WDI_Status
9255WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009256(
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 WDI_ControlBlockType* pWDICtx,
9258 WDI_EventInfoType* pEventData
9259)
9260{
9261 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9262 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9263 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 wpt_uint16 usDataOffset = 0;
9266 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9271 wpt_uint8 keyIndex = 0;
9272
9273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9274
9275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 -------------------------------------------------------------------------*/
9278 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9279 ( NULL == pEventData->pCBfnc ))
9280 {
9281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 }
9286
9287 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9288 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9289 /*-------------------------------------------------------------------------
9290 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 -------------------------------------------------------------------------*/
9293 wpalMutexAcquire(&pWDICtx->wptMutex);
9294
9295 /*------------------------------------------------------------------------
9296 Find the BSS for which the request is made and identify WDI session
9297 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9299 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 &macBSSID))
9301 {
9302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009303 "This station does not exist in the WDI Station Table %d",
9304 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 }
9308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9310 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 {
9312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009313 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
9316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009319
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 /*------------------------------------------------------------------------
9321 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 ------------------------------------------------------------------------*/
9324 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9325 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9327 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9328 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 }
9334
9335
9336 wpalMutexRelease(&pWDICtx->wptMutex);
9337 /*-----------------------------------------------------------------------
9338 Get message buffer
9339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9342 &pSendBuffer, &usDataOffset, &usSendSize))||
9343 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9344 {
9345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009346 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 }
9351 /*-----------------------------------------------------------------------
9352 Copy the STA Key parameters into the HAL message
9353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9356
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9359
9360 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9361
9362 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9363
9364 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9365
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9367 keyIndex++)
9368 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9371 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9372 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9373 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9374 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9375 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9382 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 WDI_MAX_KEY_LENGTH);
9385 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009386
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 wpalMemoryCopy( pSendBuffer+usDataOffset,
9388 &halSetStaKeyReqMsg.setStaKeyParams,
9389 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009390
9391 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
9394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9398 wdiSetSTAKeyRspCb, pEventData->pUserData,
9399 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009400
9401}/*WDI_ProcessSetSTABcastKeyReq*/
9402
9403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009406
9407 @param pWDICtx: pointer to the WLAN DAL context
9408 pEventData: pointer to the event information structure
9409
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 @see
9411 @return Result of the function call
9412*/
9413WDI_Status
9414WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009415(
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 WDI_ControlBlockType* pWDICtx,
9417 WDI_EventInfoType* pEventData
9418)
9419{
9420 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9421 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9422 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 wpt_uint16 usDataOffset = 0;
9425 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 wpt_macAddr macBSSID;
9428 wpt_uint8 ucCurrentBSSSesIdx;
9429 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9431
9432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 -------------------------------------------------------------------------*/
9435 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9436 ( NULL == pEventData->pCBfnc ))
9437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 }
9443
9444 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9445 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9446 /*-------------------------------------------------------------------------
9447 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 -------------------------------------------------------------------------*/
9450 wpalMutexAcquire(&pWDICtx->wptMutex);
9451
9452 /*------------------------------------------------------------------------
9453 Find the BSS for which the request is made and identify WDI session
9454 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9456 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 &macBSSID))
9458 {
9459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009460 "This station does not exist in the WDI Station Table %d",
9461 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9467 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9470 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
9473 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009476
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 /*------------------------------------------------------------------------
9478 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 ------------------------------------------------------------------------*/
9481 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9482 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9484 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9485 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 }
9491
9492
9493
9494 wpalMutexRelease(&pWDICtx->wptMutex);
9495 /*-----------------------------------------------------------------------
9496 Get message buffer
9497 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9500 &pSendBuffer, &usDataOffset, &usSendSize))||
9501 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9502 {
9503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009504 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 }
9509
9510 /*-----------------------------------------------------------------------
9511 Copy the Key parameters into the HAL message
9512 -----------------------------------------------------------------------*/
9513
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9522
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9525
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 wpalMemoryCopy( pSendBuffer+usDataOffset,
9527 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9528 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009529
9530 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
9533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009539
9540}/*WDI_ProcessRemoveSTABcastKeyReq*/
9541
9542/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009544==========================================================================*/
9545/**
9546 @brief Process Add TSpec Request function (called when Main FSM
9547 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009548
9549 @param pWDICtx: pointer to the WLAN DAL context
9550 pEventData: pointer to the event information structure
9551
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 @see
9553 @return Result of the function call
9554*/
9555WDI_Status
9556WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009557(
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 WDI_ControlBlockType* pWDICtx,
9559 WDI_EventInfoType* pEventData
9560)
9561{
9562 WDI_AddTSReqParamsType* pwdiAddTSParams;
9563 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 wpt_uint16 usDataOffset = 0;
9568 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 wpt_macAddr macBSSID;
9571 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009572
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9574
9575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 -------------------------------------------------------------------------*/
9578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9579 ( NULL == pEventData->pCBfnc ))
9580 {
9581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 }
9586
9587 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9588 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9589 /*-------------------------------------------------------------------------
9590 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 -------------------------------------------------------------------------*/
9593 wpalMutexAcquire(&pWDICtx->wptMutex);
9594
9595 /*------------------------------------------------------------------------
9596 Find the BSS for which the request is made and identify WDI session
9597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9599 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 &macBSSID))
9601 {
9602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009603 "This station does not exist in the WDI Station Table %d",
9604 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 }
9608
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9610 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9613 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
9616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009619
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 /*------------------------------------------------------------------------
9621 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 ------------------------------------------------------------------------*/
9624 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9625 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9627 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9628 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009629
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635 wpalMutexRelease(&pWDICtx->wptMutex);
9636 /*-----------------------------------------------------------------------
9637 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9641 sizeof(halAddTsParams),
9642 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 &usSendSize))||
9644 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9645 {
9646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009647 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652
9653 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9654 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9655
9656 //TSPEC IE
9657 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9658 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9689
9690 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9705
9706 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9711
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 wpalMemoryCopy( pSendBuffer+usDataOffset,
9713 &halAddTsParams,
9714 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009715
9716 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718
9719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009725}/*WDI_ProcessAddTSpecReq*/
9726
9727
9728/**
9729 @brief Process Del TSpec Request function (called when Main FSM
9730 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009731
9732 @param pWDICtx: pointer to the WLAN DAL context
9733 pEventData: pointer to the event information structure
9734
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 @see
9736 @return Result of the function call
9737*/
9738WDI_Status
9739WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009740(
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 WDI_ControlBlockType* pWDICtx,
9742 WDI_EventInfoType* pEventData
9743)
9744{
9745 WDI_DelTSReqParamsType* pwdiDelTSParams;
9746 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 wpt_uint16 usDataOffset = 0;
9751 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9754
9755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 -------------------------------------------------------------------------*/
9758 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9759 ( NULL == pEventData->pCBfnc ))
9760 {
9761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
9767 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9768 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9769
9770 /*-------------------------------------------------------------------------
9771 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 -------------------------------------------------------------------------*/
9774 wpalMutexAcquire(&pWDICtx->wptMutex);
9775
9776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9780 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9781 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009782
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9786 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9787 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9788
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 }
9792
9793 /*------------------------------------------------------------------------
9794 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 ------------------------------------------------------------------------*/
9797 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9800 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9801 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009802
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808
9809 wpalMutexRelease(&pWDICtx->wptMutex);
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9816 &pSendBuffer, &usDataOffset, &usSendSize))||
9817 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9818 {
9819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009820 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 wpalMemoryCopy( pSendBuffer+usDataOffset,
9827 &pwdiDelTSParams->wdiDelTSInfo,
9828 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9837 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009838}/*WDI_ProcessDelTSpecReq*/
9839
9840/**
9841 @brief Process Update EDCA Params Request function (called when
9842 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009843
9844 @param pWDICtx: pointer to the WLAN DAL context
9845 pEventData: pointer to the event information structure
9846
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 @see
9848 @return Result of the function call
9849*/
9850WDI_Status
9851WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009852(
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 WDI_ControlBlockType* pWDICtx,
9854 WDI_EventInfoType* pEventData
9855)
9856{
9857 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9858 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 wpt_uint16 usDataOffset = 0;
9863 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9866
9867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 -------------------------------------------------------------------------*/
9870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9871 ( NULL == pEventData->pCBfnc ))
9872 {
9873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 }
9878
9879 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9880 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9881 /*-------------------------------------------------------------------------
9882 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 -------------------------------------------------------------------------*/
9885 wpalMutexAcquire(&pWDICtx->wptMutex);
9886
9887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9891 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9892 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009893
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 {
9896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9898 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009899
9900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 }
9903
9904 /*------------------------------------------------------------------------
9905 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 ------------------------------------------------------------------------*/
9908 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9909 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9911 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9912 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 }
9918
9919
9920 wpalMutexRelease(&pWDICtx->wptMutex);
9921 /*-----------------------------------------------------------------------
9922 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9927 &pSendBuffer, &usDataOffset, &usSendSize))||
9928 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9929 {
9930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009931 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 wpalMemoryCopy( pSendBuffer+usDataOffset,
9938 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9939 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009940
9941 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009943
9944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9948 wdiUpdateEDCARspCb, pEventData->pUserData,
9949 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009950}/*WDI_ProcessUpdateEDCAParamsReq*/
9951
9952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009955
9956 @param pWDICtx: pointer to the WLAN DAL context
9957 pEventData: pointer to the event information structure
9958
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 @see
9960 @return Result of the function call
9961*/
9962WDI_Status
9963WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009964(
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 WDI_ControlBlockType* pWDICtx,
9966 WDI_EventInfoType* pEventData
9967)
9968{
9969 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9970 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 wpt_uint16 usDataOffset = 0;
9975 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 wpt_macAddr macBSSID;
9978
9979 tAddBASessionReqMsg halAddBASessionReq;
9980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9981
9982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 -------------------------------------------------------------------------*/
9985 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9986 ( NULL == pEventData->pCBfnc ))
9987 {
9988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 }
9993
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9998 /*-------------------------------------------------------------------------
9999 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 -------------------------------------------------------------------------*/
10002 wpalMutexAcquire(&pWDICtx->wptMutex);
10003
10004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10008 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 &macBSSID))
10010 {
10011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010012 "This station does not exist in the WDI Station Table %d",
10013 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 }
10017
10018
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10024 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10025 __func__, MAC_ADDR_ARRAY(macBSSID));
10026
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 }
10030
10031 /*------------------------------------------------------------------------
10032 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 ------------------------------------------------------------------------*/
10035 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10036 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10038 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010044 }
10045
10046
10047 wpalMutexRelease(&pWDICtx->wptMutex);
10048 /*-----------------------------------------------------------------------
10049 Get message buffer
10050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10052 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 sizeof(halAddBASessionReq.addBASessionParams),
10054 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10057 {
10058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010059 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 }
10064
10065 halAddBASessionReq.addBASessionParams.staIdx =
10066 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10067 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10068 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10069 WDI_MAC_ADDR_LEN);
10070 halAddBASessionReq.addBASessionParams.baTID =
10071 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10072 halAddBASessionReq.addBASessionParams.baPolicy =
10073 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10074 halAddBASessionReq.addBASessionParams.baBufferSize =
10075 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10076 halAddBASessionReq.addBASessionParams.baTimeout =
10077 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10078 halAddBASessionReq.addBASessionParams.baSSN =
10079 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10080 halAddBASessionReq.addBASessionParams.baDirection =
10081 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10082
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 wpalMemoryCopy( pSendBuffer+usDataOffset,
10084 &halAddBASessionReq.addBASessionParams,
10085 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
10087 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010089
10090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10094 wdiAddBASessionRspCb, pEventData->pUserData,
10095 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010096}/*WDI_ProcessAddBASessionReq*/
10097
10098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010101
10102 @param pWDICtx: pointer to the WLAN DAL context
10103 pEventData: pointer to the event information structure
10104
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 @see
10106 @return Result of the function call
10107*/
10108WDI_Status
10109WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010110(
Jeff Johnson295189b2012-06-20 16:38:30 -070010111 WDI_ControlBlockType* pWDICtx,
10112 WDI_EventInfoType* pEventData
10113)
10114{
10115 WDI_DelBAReqParamsType* pwdiDelBAParams;
10116 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 wpt_uint16 usDataOffset = 0;
10121 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 wpt_macAddr macBSSID;
10124 tDelBAParams halDelBAparam;
10125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10126
10127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 -------------------------------------------------------------------------*/
10130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10131 ( NULL == pEventData->pCBfnc ))
10132 {
10133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 }
10138
10139 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10140 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10141 /*-------------------------------------------------------------------------
10142 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 -------------------------------------------------------------------------*/
10145 wpalMutexAcquire(&pWDICtx->wptMutex);
10146
10147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10151 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 &macBSSID))
10153 {
10154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010155 "This station does not exist in the WDI Station Table %d",
10156 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 }
10160
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010162
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10166 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10167 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
10169 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 }
10172
10173 /*------------------------------------------------------------------------
10174 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 ------------------------------------------------------------------------*/
10177 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10178 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10180 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10181 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010182
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 }
10187
10188 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 sizeof(halDelBAparam),
10191 &pSendBuffer, &usDataOffset, &usSendSize))||
10192 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10193 {
10194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010195 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 }
10200
10201 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10202 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10203 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10204
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 wpalMemoryCopy( pSendBuffer+usDataOffset,
10206 &halDelBAparam,
10207 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010208
10209 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
10212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10216 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010217}/*WDI_ProcessDelBAReq*/
10218
10219#ifdef FEATURE_WLAN_CCX
10220
10221WDI_Status
10222WDI_ProcessTSMStatsReq
10223(
10224 WDI_ControlBlockType* pWDICtx,
10225 WDI_EventInfoType* pEventData
10226)
10227{
10228 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10229 WDI_TsmRspCb wdiTSMRspCb;
10230 wpt_uint8 ucCurrentBSSSesIdx = 0;
10231 WDI_BSSSessionType* pBSSSes = NULL;
10232 wpt_uint8* pSendBuffer = NULL;
10233 wpt_uint16 usDataOffset = 0;
10234 wpt_uint16 usSendSize = 0;
10235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10236 tTsmStatsParams halTsmStatsReqParams = {0};
10237
10238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10239
10240 /*-------------------------------------------------------------------------
10241 Sanity check
10242 -------------------------------------------------------------------------*/
10243 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10244 ( NULL == pEventData->pCBfnc ))
10245 {
10246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 WDI_ASSERT(0);
10249 return WDI_STATUS_E_FAILURE;
10250 }
10251
10252 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10253 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10254 /*-------------------------------------------------------------------------
10255 Check to see if we are in the middle of an association, if so queue, if
10256 not it means it is free to process request
10257 -------------------------------------------------------------------------*/
10258 wpalMutexAcquire(&pWDICtx->wptMutex);
10259
10260 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10261 if ( NULL == pBSSSes )
10262 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10264 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10265 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 wpalMutexRelease(&pWDICtx->wptMutex);
10268 return WDI_STATUS_E_NOT_ALLOWED;
10269 }
10270
10271 /*------------------------------------------------------------------------
10272 Check if this BSS is being currently processed or queued,
10273 if queued - queue the new request as well
10274 ------------------------------------------------------------------------*/
10275 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10276 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10278 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10279 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10282 wpalMutexRelease(&pWDICtx->wptMutex);
10283 return wdiStatus;
10284 }
10285
10286 wpalMutexRelease(&pWDICtx->wptMutex);
10287 /*-----------------------------------------------------------------------
10288 Get message buffer
10289 ! TO DO : proper conversion into the HAL Message Request Format
10290 -----------------------------------------------------------------------*/
10291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10292 sizeof(halTsmStatsReqParams),
10293 &pSendBuffer, &usDataOffset, &usSendSize))||
10294 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10295 {
10296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010297 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 pEventData, pwdiTSMParams, wdiTSMRspCb);
10299 WDI_ASSERT(0);
10300 return WDI_STATUS_E_FAILURE;
10301 }
10302
10303 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10304 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10305 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10306 WDI_MAC_ADDR_LEN);
10307 wpalMemoryCopy( pSendBuffer+usDataOffset,
10308 &halTsmStatsReqParams,
10309 sizeof(halTsmStatsReqParams));
10310
10311 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10312 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10313
10314 /*-------------------------------------------------------------------------
10315 Send TSM Stats Request to HAL
10316 -------------------------------------------------------------------------*/
10317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10318 wdiTSMRspCb, pEventData->pUserData,
10319 WDI_TSM_STATS_RESP);
10320}/*WDI_ProcessTSMStatsReq*/
10321
10322#endif
10323
10324
10325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010328
10329 @param pWDICtx: pointer to the WLAN DAL context
10330 pEventData: pointer to the event information structure
10331
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 @see
10333 @return Result of the function call
10334*/
10335WDI_Status
10336WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010337(
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 WDI_ControlBlockType* pWDICtx,
10339 WDI_EventInfoType* pEventData
10340)
10341{
10342 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10343 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 wpt_uint16 usDataOffset = 0;
10346 wpt_uint16 usSendSize = 0;
10347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10348
10349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -------------------------------------------------------------------------*/
10352 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10353 ( NULL == pEventData->pCBfnc ))
10354 {
10355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 }
10360
10361 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10362 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10363 /*-----------------------------------------------------------------------
10364 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10369 &pSendBuffer, &usDataOffset, &usSendSize))||
10370 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10371 {
10372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010373 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 }
10378
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 wpalMemoryCopy( pSendBuffer+usDataOffset,
10380 &pwdiFlushAcParams->wdiFlushAcInfo,
10381 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010382
10383 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010385
10386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10390 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391}/*WDI_ProcessFlushAcReq*/
10392
10393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010396
10397 @param pWDICtx: pointer to the WLAN DAL context
10398 pEventData: pointer to the event information structure
10399
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 @see
10401 @return Result of the function call
10402*/
10403WDI_Status
10404WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010405(
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 WDI_ControlBlockType* pWDICtx,
10407 WDI_EventInfoType* pEventData
10408)
10409{
10410 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10411 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 wpt_uint16 usDataOffset = 0;
10414 wpt_uint16 usSendSize = 0;
10415
10416 tBtAmpEventMsg haltBtAmpEventMsg;
10417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10418
10419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 -------------------------------------------------------------------------*/
10422 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10423 ( NULL == pEventData->pCBfnc ))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 }
10430
10431 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10432 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10433 /*-----------------------------------------------------------------------
10434 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10439 &pSendBuffer, &usDataOffset, &usSendSize))||
10440 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10441 {
10442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010443 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 }
10448
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 wpalMemoryCopy( pSendBuffer+usDataOffset,
10452 &haltBtAmpEventMsg.btAmpEventParams,
10453 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010454
10455 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
10458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10462 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010463}/*WDI_ProcessBtAmpEventReq*/
10464
10465/**
10466 @brief Process Add STA self Request function (called when Main FSM
10467 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010468
10469 @param pWDICtx: pointer to the WLAN DAL context
10470 pEventData: pointer to the event information structure
10471
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 @see
10473 @return Result of the function call
10474*/
10475WDI_Status
10476WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010477(
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 WDI_ControlBlockType* pWDICtx,
10479 WDI_EventInfoType* pEventData
10480)
10481{
10482 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10483 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 wpt_uint16 usDataOffset = 0;
10486 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010487 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10489
10490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 -------------------------------------------------------------------------*/
10493 if (( NULL == pEventData ) ||
10494 ( NULL == pEventData->pEventData) ||
10495 ( NULL == pEventData->pCBfnc))
10496 {
10497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 }
10502
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10507 /*-----------------------------------------------------------------------
10508 Get message buffer
10509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10511 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010512 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010514 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010517 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522
10523 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10526
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010528 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10529 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10530 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10531 {
10532 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10533 }
10534 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10535 VOS_P2P_CLIENT_MODE) ||
10536 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10537 VOS_P2P_DEVICE))
10538 {
10539 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10540 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010542 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010543
10544 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010546
10547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10551 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10552 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010553}/*WDI_ProcessAddSTASelfReq*/
10554
10555
10556
10557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010560
10561 @param pWDICtx: pointer to the WLAN DAL context
10562 pEventData: pointer to the event information structure
10563
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 @see
10565 @return Result of the function call
10566*/
10567WDI_Status
10568WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010569(
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 WDI_ControlBlockType* pWDICtx,
10571 WDI_EventInfoType* pEventData
10572)
10573{
10574 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10575 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 wpt_uint16 usDataOffset = 0;
10578 wpt_uint16 usSendSize = 0;
10579 tDelStaSelfParams halSetDelSelfSTAParams;
10580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10581
10582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
10585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10586 ( NULL == pEventData->pCBfnc ))
10587 {
10588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 }
10593
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10596 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10597
10598 /*-----------------------------------------------------------------------
10599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10604 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10607 {
10608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010609 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 }
10614
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10617
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10619 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010620
10621 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010623
10624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10628 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_DEL_STA_SELF_RESP);
10630
10631}
10632
Jeff Johnsone7245742012-09-05 17:12:55 -070010633#ifdef FEATURE_OEM_DATA_SUPPORT
10634/**
10635 @brief Process Start Oem Data Request function (called when Main
10636 FSM allows it)
10637
10638 @param pWDICtx: pointer to the WLAN DAL context
10639 pEventData: pointer to the event information structure
10640
10641 @see
10642 @return Result of the function call
10643*/
10644WDI_Status
10645WDI_ProcessStartOemDataReq
10646(
10647 WDI_ControlBlockType* pWDICtx,
10648 WDI_EventInfoType* pEventData
10649)
10650{
10651 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10652 WDI_oemDataRspCb wdiOemDataRspCb;
10653 wpt_uint8* pSendBuffer = NULL;
10654 wpt_uint16 usDataOffset = 0;
10655 wpt_uint16 usSendSize = 0;
10656 wpt_uint16 reqLen;
10657 tStartOemDataReqParams* halStartOemDataReqParams;
10658
10659 /*-------------------------------------------------------------------------
10660 Sanity check
10661 -------------------------------------------------------------------------*/
10662 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10663 ( NULL == pEventData->pCBfnc ))
10664 {
10665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010666 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 WDI_ASSERT(0);
10668 return WDI_STATUS_E_FAILURE;
10669 }
10670
10671 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10672 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10673
10674 /*-----------------------------------------------------------------------
10675 Get message buffer
10676 -----------------------------------------------------------------------*/
10677
10678 reqLen = sizeof(tStartOemDataReqParams);
10679
10680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10681 WDI_START_OEM_DATA_REQ, reqLen,
10682 &pSendBuffer, &usDataOffset, &usSendSize))||
10683 (usSendSize < (usDataOffset + reqLen)))
10684 {
10685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010686 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10688 WDI_ASSERT(0);
10689 return WDI_STATUS_E_FAILURE;
10690 }
10691
10692 //copying WDI OEM DATA REQ PARAMS to shared memory
10693 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10694
10695 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10696 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10697
10698 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10699 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10700
10701 /*-------------------------------------------------------------------------
10702 Send Start Request to HAL
10703 -------------------------------------------------------------------------*/
10704 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10705 wdiOemDataRspCb, pEventData->pUserData,
10706 WDI_START_OEM_DATA_RESP);
10707}/*WDI_ProcessStartOemDataReq*/
10708#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010709
10710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010713
10714 @param pWDICtx: pointer to the WLAN DAL context
10715 pEventData: pointer to the event information structure
10716
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 @see
10718 @return Result of the function call
10719*/
10720WDI_Status
10721WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010722(
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 WDI_ControlBlockType* pWDICtx,
10724 WDI_EventInfoType* pEventData
10725)
10726{
10727 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10728 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 wpt_uint16 usDataOffset = 0;
10731 wpt_uint16 usSendSize = 0;
10732 tHalWlanHostResumeReqParam halResumeReqParams;
10733
10734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10735
10736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 -------------------------------------------------------------------------*/
10739 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10740 ( NULL == pEventData->pCBfnc ))
10741 {
10742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010743 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 }
10747
10748 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10749 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10750
10751 /*-----------------------------------------------------------------------
10752 Get message buffer
10753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10756 &pSendBuffer, &usDataOffset, &usSendSize))||
10757 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10758 {
10759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010760 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 }
10765
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010768
10769 wpalMemoryCopy( pSendBuffer+usDataOffset,
10770 &halResumeReqParams,
10771 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010772
10773 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775
10776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10780 wdiHostResumeRspCb, pEventData->pUserData,
10781 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010782}/*WDI_ProcessHostResumeReq*/
10783
10784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010787
10788 @param pWDICtx: pointer to the WLAN DAL context
10789 pEventData: pointer to the event information structure
10790
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 @see
10792 @return Result of the function call
10793*/
10794WDI_Status
10795WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010796(
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 WDI_ControlBlockType* pWDICtx,
10798 WDI_EventInfoType* pEventData
10799)
10800{
10801 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10802 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 wpt_uint16 usDataOffset = 0;
10805 wpt_uint16 usSendSize = 0;
10806 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10808
10809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 -------------------------------------------------------------------------*/
10812 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10813 ( NULL == pEventData->pCBfnc ))
10814 {
10815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010816 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 }
10820
10821 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10822 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010823
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 /*-----------------------------------------------------------------------
10825 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(halTxPerTrackingReqParam),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
10831 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010834 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010839
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10841 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10842 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10843 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010844
10845 wpalMemoryCopy( pSendBuffer+usDataOffset,
10846 &halTxPerTrackingReqParam,
10847 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
10849 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
10852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10856 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010857}/*WDI_ProcessSetTxPerTrackingReq*/
10858
10859/*=========================================================================
10860 Indications
10861=========================================================================*/
10862
10863/**
10864 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010865
10866 @param pWDICtx: pointer to the WLAN DAL context
10867 pEventData: pointer to the event information structure
10868
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 @see
10870 @return Result of the function call
10871*/
10872WDI_Status
10873WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010874(
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 WDI_ControlBlockType* pWDICtx,
10876 WDI_EventInfoType* pEventData
10877)
10878{
10879 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 wpt_uint16 usDataOffset = 0;
10882 wpt_uint16 usSendSize = 0;
10883 WDI_Status wdiStatus;
10884 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10886
10887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 -------------------------------------------------------------------------*/
10890 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10891 {
10892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010893 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 }
10897
10898 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10899
10900 /*-----------------------------------------------------------------------
10901 Get message buffer
10902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10904 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 sizeof(halWlanSuspendIndparams),
10906 &pSendBuffer, &usDataOffset, &usSendSize))||
10907 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10910 "Unable to get send buffer in Suspend Ind ");
10911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 }
10914
10915 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10916 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10917
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010919 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10922 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
10927 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010929
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10932}/*WDI_ProcessHostSuspendInd*/
10933
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010934
10935
10936/**
10937 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10938
10939 @param pWDICtx: pointer to the WLAN DAL context
10940 pEventData: pointer to the event information structure
10941
10942 @see
10943 @return Result of the function call
10944*/
10945WDI_Status
10946WDI_ProcessTrafficStatsInd
10947(
10948 WDI_ControlBlockType* pWDICtx,
10949 WDI_EventInfoType* pEventData
10950)
10951{
10952 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10953 wpt_uint8* pSendBuffer = NULL;
10954 wpt_uint16 usDataOffset = 0;
10955 wpt_uint16 usSendSize = 0;
10956 WDI_Status wdiStatus;
10957 tStatsClassBIndParams* pStatsClassBIndParams;
10958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10959
10960 /*-------------------------------------------------------------------------
10961 Sanity check
10962 -------------------------------------------------------------------------*/
10963 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10964 {
10965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10966 "%s: Invalid parameters in Traffic Stats ind",__func__);
10967 WDI_ASSERT(0);
10968 return WDI_STATUS_E_FAILURE;
10969 }
10970
10971 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10972
10973 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10974 {
10975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10976 "%s: Invalid parameters in Traffic Stats ind",__func__);
10977 WDI_ASSERT(0);
10978 return WDI_STATUS_E_FAILURE;
10979 }
10980
10981 /*-----------------------------------------------------------------------
10982 Get message buffer
10983 -----------------------------------------------------------------------*/
10984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10985 WDI_TRAFFIC_STATS_IND,
10986 sizeof(tStatsClassBIndParams),
10987 &pSendBuffer, &usDataOffset, &usSendSize))||
10988 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10989 {
10990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10991 "Unable to get send buffer in Traffic Stats Ind ");
10992 WDI_ASSERT(0);
10993 return WDI_STATUS_E_FAILURE;
10994 }
10995
10996 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10997
10998 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10999
11000 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11001 pTrafficStatsIndParams->pTrafficStats,
11002 pTrafficStatsIndParams->length);
11003
11004 /*-------------------------------------------------------------------------
11005 Send Suspend Request to HAL
11006 -------------------------------------------------------------------------*/
11007 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11008 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11009
11010 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11011 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11012}/*WDI_ProcessTrafficStatsInd*/
11013
Chet Lanctota96bb432013-03-18 10:26:30 -070011014#ifdef WLAN_FEATURE_11W
11015/**
11016 @brief Process Exclude Unencrypted Indications function (called
11017 when Main FSM allows it)
11018
11019 @param pWDICtx: pointer to the WLAN DAL context
11020 pEventData: pointer to the event information structure
11021
11022 @see
11023 @return Result of the function call
11024*/
11025WDI_Status
11026WDI_ProcessExcludeUnencryptInd
11027(
11028 WDI_ControlBlockType* pWDICtx,
11029 WDI_EventInfoType* pEventData
11030)
11031{
11032 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11033 wpt_uint8* pSendBuffer = NULL;
11034 wpt_uint16 usDataOffset = 0;
11035 wpt_uint16 usSendSize = 0;
11036 WDI_Status wdiStatus;
11037 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11039
11040 /*-------------------------------------------------------------------------
11041 Sanity check
11042 -------------------------------------------------------------------------*/
11043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11044 {
11045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11046 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11047 WDI_ASSERT(0);
11048 return WDI_STATUS_E_FAILURE;
11049 }
11050
11051 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11052
11053 /*-----------------------------------------------------------------------
11054 Get message buffer
11055 -----------------------------------------------------------------------*/
11056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11057 WDI_EXCLUDE_UNENCRYPTED_IND,
11058 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11059 &pSendBuffer, &usDataOffset, &usSendSize))||
11060 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11061 {
11062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11063 "Unable to get send buffer in Exclude Unencrypted Ind ");
11064 WDI_ASSERT(0);
11065 return WDI_STATUS_E_FAILURE;
11066 }
11067
11068 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11069
11070 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11071
11072 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11073 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11074
11075 /*-------------------------------------------------------------------------
11076 Send Suspend Request to HAL
11077 -------------------------------------------------------------------------*/
11078 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11079 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11080
11081 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11082 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11083}/*WDI_ProcessExcludeUnencryptInd*/
11084#endif
11085
Yue Ma365933a2013-08-14 15:59:08 -070011086/**
11087 @brief Process Add Periodic Tx Pattern Indication function (called when
11088 Main FSM allows it)
11089
11090 @param pWDICtx: pointer to the WLAN DAL context
11091 pEventData: pointer to the event information structure
11092
11093 @see
11094 @return Result of the function call
11095*/
11096WDI_Status
11097WDI_ProcessAddPeriodicTxPtrnInd
11098(
11099 WDI_ControlBlockType* pWDICtx,
11100 WDI_EventInfoType* pEventData
11101)
11102{
11103 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11104 wpt_uint8* pSendBuffer = NULL;
11105 wpt_uint16 usDataOffset = 0;
11106 wpt_uint16 usSendSize = 0;
11107 WDI_Status wdiStatus;
11108 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11109 wpt_uint8 selfStaIdx = 0;
11110
11111 /*-------------------------------------------------------------------------
11112 Sanity check
11113 -------------------------------------------------------------------------*/
11114 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11115 {
11116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11117 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11118 WDI_ASSERT(0);
11119 return WDI_STATUS_E_FAILURE;
11120 }
11121
11122 pAddPeriodicTxPtrnParams =
11123 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11124
11125 /*------------------------------------------------------------------------
11126 Get message buffer
11127 ------------------------------------------------------------------------*/
11128 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11129 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11130 &pSendBuffer, &usDataOffset, &usSendSize))||
11131 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11132 {
11133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11134 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11135 __func__);
11136 WDI_ASSERT(0);
11137 return WDI_STATUS_E_FAILURE;
11138 }
11139
11140 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11141
11142 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11143 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11144 &selfStaIdx))
11145 {
11146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11147 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011148 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011149
11150 return WDI_STATUS_E_FAILURE;
11151 }
11152
11153 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11154 halAddPeriodicTxPtrn->ucPtrnId =
11155 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11156 halAddPeriodicTxPtrn->usPtrnSize =
11157 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11158 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11159 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11160
11161 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11162 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11163 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11164
11165 /*-------------------------------------------------------------------------
11166 Send Indication to HAL
11167 -------------------------------------------------------------------------*/
11168 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11169 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11170
11171 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11172
11173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11174 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11175
11176 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11177} /* WDI_ProcessAddPeriodicTxPtrnInd */
11178
11179/**
11180 @brief Process Delete Periodic Tx Pattern Indication function (called when
11181 Main FSM allows it)
11182
11183 @param pWDICtx: pointer to the WLAN DAL context
11184 pEventData: pointer to the event information structure
11185
11186 @see
11187 @return Result of the function call
11188*/
11189WDI_Status
11190WDI_ProcessDelPeriodicTxPtrnInd
11191(
11192 WDI_ControlBlockType* pWDICtx,
11193 WDI_EventInfoType* pEventData
11194)
11195{
11196 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11197 wpt_uint8* pSendBuffer = NULL;
11198 wpt_uint16 usDataOffset = 0;
11199 wpt_uint16 usSendSize = 0;
11200 WDI_Status wdiStatus;
11201 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11202 wpt_uint8 selfStaIdx = 0;
11203
11204 /*-------------------------------------------------------------------------
11205 Sanity check
11206 -------------------------------------------------------------------------*/
11207 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11208 {
11209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11210 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11211 WDI_ASSERT(0);
11212 return WDI_STATUS_E_FAILURE;
11213 }
11214
11215 pDelPeriodicTxPtrnParams =
11216 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11217
11218 /*------------------------------------------------------------------------
11219 Get message buffer
11220 ------------------------------------------------------------------------*/
11221 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11222 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11223 &pSendBuffer, &usDataOffset, &usSendSize))||
11224 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11225 {
11226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11227 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11228 __func__);
11229 WDI_ASSERT(0);
11230 return WDI_STATUS_E_FAILURE;
11231 }
11232
11233 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11234
11235 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11236 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11237 &selfStaIdx))
11238 {
11239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11240 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011241 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011242
11243 return WDI_STATUS_E_FAILURE;
11244 }
11245
11246 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11247 halDelPeriodicTxPtrn->uPatternIdBitmap =
11248 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11249
11250 /*-------------------------------------------------------------------------
11251 Send Indication to HAL
11252 -------------------------------------------------------------------------*/
11253 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11254 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11255
11256 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11257
11258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11259 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11260
11261 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11262} /* WDI_ProcessDelPeriodicTxPtrnInd */
11263
Jeff Johnson295189b2012-06-20 16:38:30 -070011264/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011265 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011266==========================================================================*/
11267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011270
11271 @param pWDICtx: pointer to the WLAN DAL context
11272 pEventData: pointer to the event information structure
11273
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 @see
11275 @return Result of the function call
11276*/
11277WDI_Status
11278WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011279(
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 WDI_ControlBlockType* pWDICtx,
11281 WDI_EventInfoType* pEventData
11282)
11283{
11284 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11285 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 wpt_uint16 usDataOffset = 0;
11288 wpt_uint16 usSendSize = 0;
11289 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11291
11292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 -------------------------------------------------------------------------*/
11295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11296 ( NULL == pEventData->pCBfnc ))
11297 {
11298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 }
11303
11304 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11305 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11306 /*-----------------------------------------------------------------------
11307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 sizeof(halSwitchChannelReq.switchChannelParams),
11312 &pSendBuffer, &usDataOffset, &usSendSize))||
11313 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11314 {
11315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011316 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 }
11321
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324#ifndef WLAN_FEATURE_VOWIFI
11325 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11327#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11330
11331#ifdef WLAN_FEATURE_VOWIFI
11332 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11335 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11336 WDI_MAC_ADDR_LEN);
11337 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11338 pwdiSwitchChParams->wdiChInfo.macBSSId,
11339 WDI_MAC_ADDR_LEN);
11340#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 wpalMemoryCopy( pSendBuffer+usDataOffset,
11342 &halSwitchChannelReq.switchChannelParams,
11343 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011344
11345 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011347
11348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11352 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011353}/*WDI_ProcessChannelSwitchReq*/
11354
11355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011358
11359 @param pWDICtx: pointer to the WLAN DAL context
11360 pEventData: pointer to the event information structure
11361
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 @see
11363 @return Result of the function call
11364*/
11365WDI_Status
11366WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011367(
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 WDI_ControlBlockType* pWDICtx,
11369 WDI_EventInfoType* pEventData
11370)
11371{
11372 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11373 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 wpt_uint16 usDataOffset = 0;
11378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 tConfigStaReqMsg halConfigStaReqMsg;
11382 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11384
11385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 -------------------------------------------------------------------------*/
11388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11389 ( NULL == pEventData->pCBfnc ))
11390 {
11391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 }
11396
11397 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11398 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11399 /*-------------------------------------------------------------------------
11400 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 -------------------------------------------------------------------------*/
11403 wpalMutexAcquire(&pWDICtx->wptMutex);
11404
11405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11409 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11410 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11415 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11416 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011417
11418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 }
11421
11422 /*------------------------------------------------------------------------
11423 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 ------------------------------------------------------------------------*/
11426 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11427 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11429 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11430 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011431
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
11437 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011438
11439 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11440#ifdef WLAN_FEATURE_11AC
11441 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011442 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 else
11444#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011445 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011446
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 /*-----------------------------------------------------------------------
11448 Get message buffer
11449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11451 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 {
11455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011456 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 }
11461
11462 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 &pwdiConfigSTAParams->wdiReqInfo);
11465
11466 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11467 {
11468 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 WDI_STATableFindStaidByAddr(pWDICtx,
11471 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 {
11474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011475 MAC_ADDRESS_STR
11476 ": This station does not exist in the WDI Station Table",
11477 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011479 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 }
11482 }
11483 else
11484 {
11485 /* Need to fill in the STA Index to invalid, since at this point we have not
11486 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011487 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 }
11489
11490 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011492
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 wpalMemoryCopy( pSendBuffer+usDataOffset,
11494 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011495 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011496
11497 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011499
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11501 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 sizeof(pWDICtx->wdiCachedConfigStaReq));
11503
11504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11508 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011509}/*WDI_ProcessConfigStaReq*/
11510
11511
11512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011515
11516 @param pWDICtx: pointer to the WLAN DAL context
11517 pEventData: pointer to the event information structure
11518
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 @see
11520 @return Result of the function call
11521*/
11522WDI_Status
11523WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011524(
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 WDI_ControlBlockType* pWDICtx,
11526 WDI_EventInfoType* pEventData
11527)
11528{
11529 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11530 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 wpt_uint16 usDataOffset = 0;
11535 wpt_uint16 usSendSize = 0;
11536 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11539
11540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 -------------------------------------------------------------------------*/
11543 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11544 ( NULL == pEventData->pCBfnc ))
11545 {
11546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
11551
11552 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11553 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11554 /*-------------------------------------------------------------------------
11555 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 -------------------------------------------------------------------------*/
11558 wpalMutexAcquire(&pWDICtx->wptMutex);
11559
11560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11564 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11565 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011566
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11571 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 }
11573 else
11574 {
11575 /*------------------------------------------------------------------------
11576 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 ------------------------------------------------------------------------*/
11579 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11582 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11583 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11584
11585 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 }
11589 }
11590 /* If the link is set to enter IDLE - the Session allocated for this BSS
11591 will be deleted on the Set Link State response coming from HAL
11592 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11595
11596 wpalMutexRelease(&pWDICtx->wptMutex);
11597 /*-----------------------------------------------------------------------
11598 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011601
11602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 sizeof(halLinkStateReqMsg),
11604 &pSendBuffer, &usDataOffset, &usSendSize))||
11605 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11606 {
11607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011608 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 }
11613
11614 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11615 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11616
11617 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11618 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11619
Jeff Johnsone7245742012-09-05 17:12:55 -070011620 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11622
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 wpalMemoryCopy( pSendBuffer+usDataOffset,
11624 &halLinkStateReqMsg,
11625 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011626
11627 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011629
11630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11634 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011635}/*WDI_ProcessSetLinkStateReq*/
11636
11637
11638/**
11639 @brief Process Get Stats Request function (called when Main FSM
11640 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011641
11642 @param pWDICtx: pointer to the WLAN DAL context
11643 pEventData: pointer to the event information structure
11644
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 @see
11646 @return Result of the function call
11647*/
11648WDI_Status
11649WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011650(
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ControlBlockType* pWDICtx,
11652 WDI_EventInfoType* pEventData
11653)
11654{
11655 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11656 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 wpt_uint16 usDataOffset = 0;
11659 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 WDI_BSSSessionType* pBSSSes = NULL;
11662 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 tHalStatsReqMsg halStatsReqMsg;
11665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11666
11667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 -------------------------------------------------------------------------*/
11670 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11671 ( NULL == pEventData->pCBfnc ) )
11672 {
11673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 }
11678
11679 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11680 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11681
11682 /*-------------------------------------------------------------------------
11683 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 -------------------------------------------------------------------------*/
11686 wpalMutexAcquire(&pWDICtx->wptMutex);
11687
11688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11692 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 &macBSSID))
11694 {
11695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011696 "This station does not exist in the WDI Station Table %d",
11697 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 }
11701
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11703 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11706 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11707 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011708
11709 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 }
11712
11713 /*------------------------------------------------------------------------
11714 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 ------------------------------------------------------------------------*/
11717 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11718 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11720 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11721 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011722
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 }
11727
11728
11729 wpalMutexRelease(&pWDICtx->wptMutex);
11730
11731 /*-----------------------------------------------------------------------
11732 Get message buffer
11733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 sizeof(halStatsReqMsg.statsReqParams),
11736 &pSendBuffer, &usDataOffset, &usSendSize))||
11737 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11738 {
11739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011740 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 }
11745
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 wpalMemoryCopy( pSendBuffer+usDataOffset,
11751 &halStatsReqMsg.statsReqParams,
11752 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011753
11754 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756
11757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11761 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011762}/*WDI_ProcessGetStatsReq*/
11763
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011764#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11765/**
11766 @brief Process Get Roam Rssi Request function (called when Main FSM
11767 allows it)
11768
11769 @param pWDICtx: pointer to the WLAN DAL context
11770 pEventData: pointer to the event information structure
11771
11772 @see
11773 @return Result of the function call
11774*/
11775WDI_Status
11776WDI_ProcessGetRoamRssiReq
11777(
11778 WDI_ControlBlockType* pWDICtx,
11779 WDI_EventInfoType* pEventData
11780)
11781{
11782 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11783 WDI_GetStatsRspCb wdiGetStatsRspCb;
11784 wpt_uint8* pSendBuffer = NULL;
11785 wpt_uint16 usDataOffset = 0;
11786 wpt_uint16 usSendSize = 0;
11787 wpt_uint8 ucCurrentBSSSesIdx = 0;
11788 WDI_BSSSessionType* pBSSSes = NULL;
11789 wpt_macAddr macBSSID;
11790 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11791 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11793 /*-------------------------------------------------------------------------
11794 Sanity check
11795 -------------------------------------------------------------------------*/
11796 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11797 ( NULL == pEventData->pCBfnc ) )
11798 {
11799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11800 "%s: Invalid parameters", __func__);
11801 WDI_ASSERT(0);
11802 return WDI_STATUS_E_FAILURE;
11803 }
11804
11805 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11806 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11807
11808 /*-------------------------------------------------------------------------
11809 Check to see if we are in the middle of an association, if so queue, if
11810 not it means it is free to process request
11811 -------------------------------------------------------------------------*/
11812 wpalMutexAcquire(&pWDICtx->wptMutex);
11813
11814 /*------------------------------------------------------------------------
11815 Find the BSS for which the request is made
11816 ------------------------------------------------------------------------*/
11817 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11818 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11819 &macBSSID))
11820 {
11821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011822 "This station does not exist in the WDI Station Table %d",
11823 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011824 wpalMutexRelease(&pWDICtx->wptMutex);
11825 return WDI_STATUS_E_FAILURE;
11826 }
11827
11828 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11829 if ( NULL == pBSSSes )
11830 {
11831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11832 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11833 __func__, MAC_ADDR_ARRAY(macBSSID));
11834
11835 wpalMutexRelease(&pWDICtx->wptMutex);
11836 return WDI_STATUS_E_NOT_ALLOWED;
11837 }
11838
11839 /*------------------------------------------------------------------------
11840 Check if this BSS is being currently processed or queued,
11841 if queued - queue the new request as well
11842 ------------------------------------------------------------------------*/
11843 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11844 {
11845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11847 __func__, MAC_ADDR_ARRAY(macBSSID));
11848
11849 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11850 wpalMutexRelease(&pWDICtx->wptMutex);
11851 return wdiStatus;
11852 }
11853
11854 wpalMutexRelease(&pWDICtx->wptMutex);
11855
11856 /*-----------------------------------------------------------------------
11857 Get message buffer
11858 -----------------------------------------------------------------------*/
11859 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11860 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11861 &pSendBuffer, &usDataOffset, &usSendSize))||
11862 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11863 {
11864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011865 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011866 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11867 WDI_ASSERT(0);
11868 return WDI_STATUS_E_FAILURE;
11869 }
11870
11871 halRssiRoamReqMsg.roamRssiReqParams.staId =
11872 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11873 wpalMemoryCopy( pSendBuffer+usDataOffset,
11874 &halRssiRoamReqMsg.roamRssiReqParams,
11875 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11876
11877 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11878 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11879
11880 /*-------------------------------------------------------------------------
11881 Send Get STA Request to HAL
11882 -------------------------------------------------------------------------*/
11883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11884 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11885}/*WDI_ProcessGetRoamRssiReq*/
11886#endif
11887
Jeff Johnson295189b2012-06-20 16:38:30 -070011888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011891
11892 @param pWDICtx: pointer to the WLAN DAL context
11893 pEventData: pointer to the event information structure
11894
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 @see
11896 @return Result of the function call
11897*/
11898WDI_Status
11899WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011900(
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 WDI_ControlBlockType* pWDICtx,
11902 WDI_EventInfoType* pEventData
11903)
11904{
11905 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11906 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 wpt_uint16 usDataOffset = 0;
11910 wpt_uint16 usSendSize = 0;
11911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11912
11913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 -------------------------------------------------------------------------*/
11916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11917 ( NULL == pEventData->pCBfnc))
11918 {
11919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 }
11924
11925 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11926 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11927
11928 /*-----------------------------------------------------------------------
11929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 -----------------------------------------------------------------------*/
11932
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011939 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 }
11944
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 wpalMemoryCopy( pSendBuffer+usDataOffset,
11946 &pwdiUpdateCfgParams->uConfigBufferLen,
11947 sizeof(wpt_uint32));
11948 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11949 pwdiUpdateCfgParams->pConfigBuffer,
11950 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011951
11952 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011954
11955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 -------------------------------------------------------------------------*/
11958
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11960 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011961
11962}/*WDI_ProcessUpdateCfgReq*/
11963
11964
11965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011968
11969 @param pWDICtx: pointer to the WLAN DAL context
11970 pEventData: pointer to the event information structure
11971
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 @see
11973 @return Result of the function call
11974*/
11975WDI_Status
11976WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011977(
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 WDI_ControlBlockType* pWDICtx,
11979 WDI_EventInfoType* pEventData
11980)
11981{
11982 WDI_AddBAReqParamsType* pwdiAddBAParams;
11983 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 wpt_uint16 usDataOffset = 0;
11988 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 wpt_macAddr macBSSID;
11991
11992 tAddBAReqMsg halAddBAReq;
11993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11994
11995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 -------------------------------------------------------------------------*/
11998 if (( NULL == pEventData ) ||
11999 ( NULL == pEventData->pEventData) ||
12000 ( NULL == pEventData->pCBfnc ))
12001 {
12002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 }
12007
12008 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12009 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12010
12011 /*-------------------------------------------------------------------------
12012 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 -------------------------------------------------------------------------*/
12015 wpalMutexAcquire(&pWDICtx->wptMutex);
12016
12017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12021 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 &macBSSID))
12023 {
12024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012025 "This station does not exist in the WDI Station Table %d",
12026 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 }
12030
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12032 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12035 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12036 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012037
12038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 }
12041
12042 /*------------------------------------------------------------------------
12043 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 ------------------------------------------------------------------------*/
12046 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12047 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12049 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012051
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 }
12056
12057
12058 wpalMutexRelease(&pWDICtx->wptMutex);
12059 /*-----------------------------------------------------------------------
12060 Get message buffer
12061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 sizeof(halAddBAReq.addBAParams),
12064 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12067 {
12068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012069 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 }
12074
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12077 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12078#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12081#endif
12082
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 wpalMemoryCopy( pSendBuffer+usDataOffset,
12084 &halAddBAReq.addBAParams,
12085 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012086
12087 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012089
12090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12094 wdiAddBARspCb, pEventData->pUserData,
12095 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012096}/*WDI_ProcessAddBAReq*/
12097
12098
12099
12100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012103
12104 @param pWDICtx: pointer to the WLAN DAL context
12105 pEventData: pointer to the event information structure
12106
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 @see
12108 @return Result of the function call
12109*/
12110WDI_Status
12111WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012112(
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 WDI_ControlBlockType* pWDICtx,
12114 WDI_EventInfoType* pEventData
12115)
12116{
12117 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12118 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 wpt_uint16 usDataOffset = 0;
12123 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 wpt_uint16 index;
12126 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 tTriggerBAReqMsg halTriggerBAReq;
12129 tTriggerBaReqCandidate* halTriggerBACandidate;
12130 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12132
12133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012135 -------------------------------------------------------------------------*/
12136 if (( NULL == pEventData ) ||
12137 ( NULL == pEventData->pEventData ) ||
12138 ( NULL == pEventData->pCBfnc ))
12139 {
12140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 }
12145
12146 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12147 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12148 /*-------------------------------------------------------------------------
12149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 -------------------------------------------------------------------------*/
12152 wpalMutexAcquire(&pWDICtx->wptMutex);
12153
12154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12158 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 &macBSSID))
12160 {
12161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012162 "This station does not exist in the WDI Station Table %d",
12163 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 }
12167
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12169 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12172 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012174
12175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 }
12178
12179 /*------------------------------------------------------------------------
12180 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 ------------------------------------------------------------------------*/
12183 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12184 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12186 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12187 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012188
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 }
12193
12194
12195 wpalMutexRelease(&pWDICtx->wptMutex);
12196 /*-----------------------------------------------------------------------
12197 Get message buffer
12198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12200 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12204 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12209 {
12210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012211 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 }
12216
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12221
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 wpalMemoryCopy( pSendBuffer+usDataOffset,
12223 &halTriggerBAReq.triggerBAParams,
12224 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012225
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12228 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12229 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012230
12231 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 index++)
12233 {
12234 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12235 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12236 halTriggerBACandidate++;
12237 wdiTriggerBACandidate++;
12238 }
12239
12240 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012242
12243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12247 wdiTriggerBARspCb, pEventData->pUserData,
12248 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012249}/*WDI_ProcessTriggerBAReq*/
12250
12251
12252
12253/**
12254 @brief Process Update Beacon Params Request function (called when Main FSM
12255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012256
12257 @param pWDICtx: pointer to the WLAN DAL context
12258 pEventData: pointer to the event information structure
12259
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 @see
12261 @return Result of the function call
12262*/
12263WDI_Status
12264WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012265(
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 WDI_ControlBlockType* pWDICtx,
12267 WDI_EventInfoType* pEventData
12268)
12269{
12270 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12271 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 wpt_uint16 usDataOffset = 0;
12274 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12277
12278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 -------------------------------------------------------------------------*/
12281 if (( NULL == pEventData ) ||
12282 ( NULL == pEventData->pEventData) ||
12283 ( NULL == pEventData->pCBfnc))
12284 {
12285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 }
12290
12291 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12292 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12293 /*-----------------------------------------------------------------------
12294 Get message buffer
12295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 sizeof(halUpdateBeaconParams),
12298 &pSendBuffer, &usDataOffset, &usSendSize))||
12299 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012302 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 /*BSS Index of the BSS*/
12309 halUpdateBeaconParams.bssIdx =
12310 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12311 /*shortPreamble mode. HAL should update all the STA rates when it
12312 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12315 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12318 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12321
12322 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12335 halUpdateBeaconParams.fRIFSMode =
12336 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12341 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012342
12343 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12350 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012351}/*WDI_ProcessUpdateBeaconParamsReq*/
12352
12353
12354
12355/**
12356 @brief Process Send Beacon template Request function (called when Main FSM
12357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012358
12359 @param pWDICtx: pointer to the WLAN DAL context
12360 pEventData: pointer to the event information structure
12361
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 @see
12363 @return Result of the function call
12364*/
12365WDI_Status
12366WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012367(
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 WDI_ControlBlockType* pWDICtx,
12369 WDI_EventInfoType* pEventData
12370)
12371{
12372 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12373 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 wpt_uint16 usDataOffset = 0;
12376 wpt_uint16 usSendSize = 0;
12377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12378
12379 tSendBeaconReqMsg halSendBeaconReq;
12380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 -------------------------------------------------------------------------*/
12383 if (( NULL == pEventData ) ||
12384 ( NULL == pEventData->pEventData ) ||
12385 ( NULL == pEventData->pCBfnc ))
12386 {
12387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 }
12392
12393 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12394 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12395 /*-----------------------------------------------------------------------
12396 Get message buffer
12397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 sizeof(halSendBeaconReq.sendBeaconParam),
12400 &pSendBuffer, &usDataOffset, &usSendSize))||
12401 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012404 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
12410 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12411 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12412 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12415 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12416 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12417 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012420 /* usP2PIeOffset should be atleast greater than timIeOffset */
12421 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12422 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12423 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12424 {
12425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12426 "Invalid usP2PIeOffset %hu",
12427 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12428 WDI_ASSERT(0);
12429 return WDI_STATUS_E_FAILURE;
12430 }
12431
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012433 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012434
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 wpalMemoryCopy( pSendBuffer+usDataOffset,
12436 &halSendBeaconReq.sendBeaconParam,
12437 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012438
12439 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012441
12442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12446 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012447}/*WDI_ProcessSendBeaconParamsReq*/
12448
12449/**
12450 @brief Process Update Beacon Params Request function (called when Main FSM
12451 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012452
12453 @param pWDICtx: pointer to the WLAN DAL context
12454 pEventData: pointer to the event information structure
12455
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 @see
12457 @return Result of the function call
12458*/
12459WDI_Status
12460WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012461(
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 WDI_ControlBlockType* pWDICtx,
12463 WDI_EventInfoType* pEventData
12464)
12465{
12466 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12467 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 wpt_uint16 usDataOffset = 0;
12470 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12473
12474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 -------------------------------------------------------------------------*/
12477 if (( NULL == pEventData ) ||
12478 ( NULL == pEventData->pEventData) ||
12479 ( NULL == pEventData->pCBfnc))
12480 {
12481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 }
12486
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12491 /*-----------------------------------------------------------------------
12492 Get message buffer
12493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 sizeof(halUpdateProbeRspTmplParams),
12496 &pSendBuffer, &usDataOffset, &usSendSize))||
12497 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12498 {
12499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012500 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 }
12505
12506 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 WDI_MAC_ADDR_LEN);
12509
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12512
12513 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12514 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012516
12517
12518 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12519 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12520 WDI_PROBE_REQ_BITMAP_IE_LEN);
12521
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 wpalMemoryCopy( pSendBuffer+usDataOffset,
12523 &halUpdateProbeRspTmplParams,
12524 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012525
12526 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12533 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12534 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012535}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12536
12537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012540
12541 @param pWDICtx: pointer to the WLAN DAL context
12542 pEventData: pointer to the event information structure
12543
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 @see
12545 @return Result of the function call
12546*/
12547WDI_Status
12548WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012549(
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 WDI_ControlBlockType* pWDICtx,
12551 WDI_EventInfoType* pEventData
12552)
12553{
12554
12555 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12556 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12557
12558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 -------------------------------------------------------------------------*/
12561 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12566 {
12567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 }
12572
12573 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12576
12577 /*cache the wdi nv request message here if the the first fragment
12578 * To issue the request to HAL for the next fragment */
12579 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12582 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12584
12585 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12586 pWDICtx->pRspCBUserData = pEventData->pUserData;
12587 }
12588
12589 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12590}
12591
12592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012595
12596 @param pWDICtx: pointer to the WLAN DAL context
12597 pEventData: pointer to the event information structure
12598
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 @see
12600 @return Result of the function call
12601*/
12602WDI_Status WDI_ProcessSetMaxTxPowerReq
12603(
12604 WDI_ControlBlockType* pWDICtx,
12605 WDI_EventInfoType* pEventData
12606)
12607{
12608 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12609 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 wpt_uint16 usDataOffset = 0;
12612 wpt_uint16 usSendSize = 0;
12613 tSetMaxTxPwrReq halSetMaxTxPower;
12614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12615
12616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 -------------------------------------------------------------------------*/
12619 if (( NULL == pEventData ) ||
12620 ( NULL == pEventData->pEventData ) ||
12621 ( NULL == pEventData->pCBfnc ))
12622 {
12623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12632
12633 /*-----------------------------------------------------------------------
12634 Get message buffer
12635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012636if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12638 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012640)))
12641 {
12642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012643 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12650 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12651 WDI_MAC_ADDR_LEN);
12652
12653 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12654 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12655 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012658
12659 wpalMemoryCopy( pSendBuffer+usDataOffset,
12660 &halSetMaxTxPower.setMaxTxPwrParams,
12661 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012662
12663 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012665
12666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12670 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12671 WDI_SET_MAX_TX_POWER_RESP);
12672
Jeff Johnson295189b2012-06-20 16:38:30 -070012673}
12674
Arif Hussainfc753992013-08-09 15:09:58 -070012675/*
12676 @brief Process Set Max Tx Power Per Band Request function (called when Main
12677 FSM allows it)
12678
12679 @param pWDICtx: pointer to the WLAN DAL context
12680 pEventData: pointer to the event information structure
12681
12682 @see
12683 @return Result of the function call
12684*/
12685WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12686(
12687 WDI_ControlBlockType* pWDICtx,
12688 WDI_EventInfoType* pEventData
12689)
12690{
12691 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12692 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12693 wpt_uint8* pSendBuffer = NULL;
12694 wpt_uint16 usDataOffset = 0;
12695 wpt_uint16 usSendSize = 0;
12696 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12697 WDI_Status rValue = WDI_STATUS_SUCCESS;
12698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12699
12700 /*-------------------------------------------------------------------------
12701 Sanity check
12702 -------------------------------------------------------------------------*/
12703 if (( NULL == pEventData ) ||
12704 ( NULL == pEventData->pEventData ) ||
12705 ( NULL == pEventData->pCBfnc ))
12706 {
12707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12708 "%s: Invalid parameters", __func__);
12709 WDI_ASSERT(0);
12710 return WDI_STATUS_E_FAILURE;
12711 }
12712 pwdiSetMaxTxPowerPerBandParams = \
12713 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12714
12715 wdiSetMaxTxPowerPerBandRspCb = \
12716 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12717
12718 /*-----------------------------------------------------------------------
12719 Get message buffer
12720 -----------------------------------------------------------------------*/
12721
12722 rValue = WDI_GetMessageBuffer(pWDICtx,
12723 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12724 sizeof(tSetMaxTxPwrPerBandParams),
12725 &pSendBuffer, &usDataOffset, &usSendSize);
12726
12727 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12728 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12729 {
12730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12731 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12732 pEventData, pwdiSetMaxTxPowerPerBandParams,
12733 wdiSetMaxTxPowerPerBandRspCb);
12734 WDI_ASSERT(0);
12735 return WDI_STATUS_E_FAILURE;
12736 }
12737
12738
12739 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12740 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12741 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12742
12743 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12744 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12745
12746 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12747 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12748
12749 /*-------------------------------------------------------------------------
12750 Send Set Max Tx Power Per Band Request to HAL
12751 -------------------------------------------------------------------------*/
12752 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12753 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12754 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12755}
12756
schangd82195a2013-03-13 18:41:24 -070012757/**
12758 @brief Process Set Tx Power Request function (called when Main
12759 FSM allows it)
12760
12761 @param pWDICtx: pointer to the WLAN DAL context
12762 pEventData: pointer to the event information structure
12763
12764 @see
12765 @return Result of the function call
12766*/
12767WDI_Status WDI_ProcessSetTxPowerReq
12768(
12769 WDI_ControlBlockType* pWDICtx,
12770 WDI_EventInfoType* pEventData
12771)
12772{
12773 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12774 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12775 wpt_uint8* pSendBuffer = NULL;
12776 wpt_uint16 usDataOffset = 0;
12777 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012778 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12780
12781 /*-------------------------------------------------------------------------
12782 Sanity check
12783 -------------------------------------------------------------------------*/
12784 if (( NULL == pEventData ) ||
12785 ( NULL == pEventData->pEventData ) ||
12786 ( NULL == pEventData->pCBfnc ))
12787 {
12788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12789 "%s: Invalid parameters", __func__);
12790 WDI_ASSERT(0);
12791 return WDI_STATUS_E_FAILURE;
12792 }
12793
12794 pwdiSetTxPowerParams =
12795 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12796 wdiSetTxPowerRspCb =
12797 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12798
12799 /*-----------------------------------------------------------------------
12800 Get message buffer
12801 -----------------------------------------------------------------------*/
12802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12803 sizeof(tSetTxPwrReqParams),
12804 &pSendBuffer, &usDataOffset, &usSendSize))||
12805 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12806 )))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012809 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012810 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12811 WDI_ASSERT(0);
12812 return WDI_STATUS_E_FAILURE;
12813 }
12814
Leo Changa37e2a92013-03-25 17:39:58 -070012815 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12816 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12817 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012818
12819 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12820 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12821
12822 /*-------------------------------------------------------------------------
12823 Send Set Tx Power Request to HAL
12824 -------------------------------------------------------------------------*/
12825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12826 wdiSetTxPowerRspCb, pEventData->pUserData,
12827 WDI_SET_TX_POWER_RESP);
12828}
Jeff Johnson295189b2012-06-20 16:38:30 -070012829
12830/**
12831 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12832 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012833
12834 @param pWDICtx: pointer to the WLAN DAL context
12835 pEventData: pointer to the event information structure
12836
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 @see
12838 @return Result of the function call
12839*/
12840WDI_Status
12841WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012842(
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 WDI_ControlBlockType* pWDICtx,
12844 WDI_EventInfoType* pEventData
12845)
12846{
12847 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12848 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 wpt_uint16 usDataOffset = 0;
12851 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12854
12855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 -------------------------------------------------------------------------*/
12858 if (( NULL == pEventData ) ||
12859 ( NULL == pEventData->pEventData) ||
12860 ( NULL == pEventData->pCBfnc))
12861 {
12862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 }
12867
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12872 /*-----------------------------------------------------------------------
12873 Get message buffer
12874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12876 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 sizeof(halSetP2PGONOAParams),
12878 &pSendBuffer, &usDataOffset, &usSendSize))||
12879 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12880 {
12881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012882 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 }
12887
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12892 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12901
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 wpalMemoryCopy( pSendBuffer+usDataOffset,
12903 &halSetP2PGONOAParams,
12904 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012905
12906 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12913 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12914 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012915}/*WDI_ProcessP2PGONOAReq*/
12916
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012917#ifdef FEATURE_WLAN_TDLS
12918
12919/**
12920 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12921 allows it)
12922
12923 @param pWDICtx: pointer to the WLAN DAL context
12924 pEventData: pointer to the event information structure
12925
12926 @see
12927 @return Result of the function call
12928*/
12929WDI_Status
12930WDI_ProcessTdlsLinkEstablishReq
12931(
12932 WDI_ControlBlockType* pWDICtx,
12933 WDI_EventInfoType* pEventData
12934)
12935{
12936 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12937 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12938 wpt_uint8* pSendBuffer = NULL;
12939 wpt_uint16 usDataOffset = 0;
12940 wpt_uint16 usSendSize = 0;
12941
12942 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12944
12945 /*-------------------------------------------------------------------------
12946 Sanity check
12947 -------------------------------------------------------------------------*/
12948 if (( NULL == pEventData ) ||
12949 ( NULL == pEventData->pEventData) ||
12950 ( NULL == pEventData->pCBfnc))
12951 {
12952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12953 "%s: Invalid parameters", __func__);
12954 WDI_ASSERT(0);
12955 return WDI_STATUS_E_FAILURE;
12956 }
12957 pwdiTDLSLinkEstablishReqParams =
12958 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12959 wdiTDLSLinkEstablishReqRspCb =
12960 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12961
12962
12963 /*-----------------------------------------------------------------------
12964 Get message buffer
12965 -----------------------------------------------------------------------*/
12966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12967 WDI_TDLS_LINK_ESTABLISH_REQ,
12968 sizeof(halSetTDLSLinkEstablishParams),
12969 &pSendBuffer, &usDataOffset, &usSendSize))||
12970 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12971 {
12972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012973 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012974 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12975 WDI_ASSERT(0);
12976 return WDI_STATUS_E_FAILURE;
12977 }
12978
12979 halSetTDLSLinkEstablishParams.staIdx =
12980 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12981 halSetTDLSLinkEstablishParams.bIsResponder =
12982 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12983 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12984 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12985 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12986 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12987 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12988 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12989 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12990 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12991 halSetTDLSLinkEstablishParams.aAck = 0;
12992 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12993 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12994 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12995
12996 wpalMemoryCopy( pSendBuffer+usDataOffset,
12997 &halSetTDLSLinkEstablishParams,
12998 sizeof(halSetTDLSLinkEstablishParams));
12999
13000 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13001 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13002
13003 /*-------------------------------------------------------------------------
13004 Send Update Probe Resp Template Request to HAL
13005 -------------------------------------------------------------------------*/
13006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13007 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13008 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13009 return 0;
13010}/*WDI_ProcessTdlsLinkEstablishReq*/
13011
13012
13013#endif
13014
Jeff Johnson295189b2012-06-20 16:38:30 -070013015
13016
13017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 @param None
13021
13022 @see
13023 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013024*/
13025void
13026WDI_SetPowerStateCb
13027(
13028 wpt_status status,
13029 unsigned int dxePhyAddr,
13030 void *pContext
13031)
13032{
13033 wpt_status wptStatus;
13034 WDI_ControlBlockType *pCB = NULL;
13035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13036 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13037 {
13038 //it shouldn't happen, put an error msg
13039 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 /*
13041 * Trigger the event to bring the Enter BMPS req function to come
13042 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013043*/
13044 if( NULL != pContext )
13045 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048 else
13049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 pCB = &gWDICb;
13052 }
13053 pCB->dxePhyAddr = dxePhyAddr;
13054 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13055 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13056 {
13057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13058 "Failed to set an event");
13059
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 }
13062 return;
13063}
13064
13065
13066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
Jeff Johnson43971f52012-07-17 12:26:56 -070013083 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
13088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13089
13090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -------------------------------------------------------------------------*/
13093 if (( NULL == pEventData ) ||
13094 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)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);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013099 goto failRequest;
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_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 0,
13108 &pSendBuffer, &usDataOffset, &usSendSize))||
13109 ( usSendSize < (usDataOffset )))
13110 {
13111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013112 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 pEventData, wdiEnterImpsRspCb);
13114 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013115 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 }
13117
13118 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013119 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13120 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 {
13122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13123 "WDI Init failed to reset an event");
13124
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013126 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 }
13128
13129 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013130 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13131 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013133 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013135 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013137
13138 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013141 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13142 WDI_SET_POWER_STATE_TIMEOUT);
13143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 {
13145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13146 "WDI Init failed to wait on an event");
13147
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013149 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 }
13151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013157
13158fail:
13159 // Release the message buffer so we don't leak
13160 wpalMemoryFree(pSendBuffer);
13161
13162failRequest:
13163 //WDA should have failure check to avoid the memory leak
13164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013165}/*WDI_ProcessEnterImpsReq*/
13166
13167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013170
13171 @param pWDICtx: pointer to the WLAN DAL context
13172 pEventData: pointer to the event information structure
13173
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 @see
13175 @return Result of the function call
13176*/
13177WDI_Status
13178WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013179(
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 WDI_ControlBlockType* pWDICtx,
13181 WDI_EventInfoType* pEventData
13182)
13183{
13184 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
13188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13189
13190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 -------------------------------------------------------------------------*/
13193 if (( NULL == pEventData ) ||
13194 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13195 {
13196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 }
13201
13202 /*-----------------------------------------------------------------------
13203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 0,
13208 &pSendBuffer, &usDataOffset, &usSendSize))||
13209 ( usSendSize < (usDataOffset )))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013212 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 pEventData, wdiExitImpsRspCb);
13214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
13217
13218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13222 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013223}/*WDI_ProcessExitImpsReq*/
13224
13225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13243 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013248 wpt_status wptStatus;
13249
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
13255 if (( NULL == pEventData ) ||
13256 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13257 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13258 {
13259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013262 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 }
13264
13265 /*-----------------------------------------------------------------------
13266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 sizeof(enterBmpsReq),
13271 &pSendBuffer, &usDataOffset, &usSendSize))||
13272 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13273 {
13274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013275 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 }
13280
13281 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013282 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13283 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 {
13285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13286 "WDI Init failed to reset an event");
13287
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013289 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 }
13291
13292 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013293 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13294 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13295 {
13296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013297 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013298 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013299 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013301
13302/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013305 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13306 WDI_SET_POWER_STATE_TIMEOUT);
13307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 {
13309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13310 "WDI Init failed to wait on an event");
13311
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013313 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 }
13315
13316 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13317
13318 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13319 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13320 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13321 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13322
13323 // For CCX and 11R Roaming
13324 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13325 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13326 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13327
13328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &enterBmpsReq,
13330 sizeof(enterBmpsReq));
13331
13332 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013340
13341fail:
13342 // Release the message buffer so we don't leak
13343 wpalMemoryFree(pSendBuffer);
13344
13345failRequest:
13346 //WDA should have failure check to avoid the memory leak
13347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013348}/*WDI_ProcessEnterBmpsReq*/
13349
13350/**
13351 @brief Process Exit BMPS Request function (called when Main FSM
13352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013353
13354 @param pWDICtx: pointer to the WLAN DAL context
13355 pEventData: pointer to the event information structure
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 @see
13358 @return Result of the function call
13359*/
13360WDI_Status
13361WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013362(
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 WDI_ControlBlockType* pWDICtx,
13364 WDI_EventInfoType* pEventData
13365)
13366{
13367 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13368 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 wpt_uint16 usDataOffset = 0;
13371 wpt_uint16 usSendSize = 0;
13372 tHalExitBmpsReqParams exitBmpsReq;
13373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13374
13375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 -------------------------------------------------------------------------*/
13378 if (( NULL == pEventData ) ||
13379 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13380 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13381 {
13382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 }
13387
13388 /*-----------------------------------------------------------------------
13389 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 sizeof(exitBmpsReq),
13394 &pSendBuffer, &usDataOffset, &usSendSize))||
13395 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13396 {
13397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013398 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 }
13403 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13404
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13406
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 wpalMemoryCopy( pSendBuffer+usDataOffset,
13408 &exitBmpsReq,
13409 sizeof(exitBmpsReq));
13410
13411 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013413
13414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13418 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013419}/*WDI_ProcessExitBmpsReq*/
13420
13421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013424
13425 @param pWDICtx: pointer to the WLAN DAL context
13426 pEventData: pointer to the event information structure
13427
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 @see
13429 @return Result of the function call
13430*/
13431WDI_Status
13432WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013433(
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 WDI_ControlBlockType* pWDICtx,
13435 WDI_EventInfoType* pEventData
13436)
13437{
13438 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13439 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 wpt_uint16 usDataOffset = 0;
13442 wpt_uint16 usSendSize = 0;
13443 tUapsdReqParams enterUapsdReq;
13444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13445
13446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 -------------------------------------------------------------------------*/
13449 if (( NULL == pEventData ) ||
13450 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13451 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13452 {
13453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 }
13458
13459 /*-----------------------------------------------------------------------
13460 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 sizeof(enterUapsdReq),
13465 &pSendBuffer, &usDataOffset, &usSendSize))||
13466 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13467 {
13468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013469 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 }
13474
13475 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13476 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13477 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13478 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13479 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13480 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13481 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13482 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 wpalMemoryCopy( pSendBuffer+usDataOffset,
13486 &enterUapsdReq,
13487 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013488
13489 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491
13492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13496 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013497}/*WDI_ProcessEnterUapsdReq*/
13498
13499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013502
13503 @param pWDICtx: pointer to the WLAN DAL context
13504 pEventData: pointer to the event information structure
13505
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 @see
13507 @return Result of the function call
13508*/
13509WDI_Status
13510WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013511(
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 WDI_ControlBlockType* pWDICtx,
13513 WDI_EventInfoType* pEventData
13514)
13515{
13516 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 wpt_uint16 usDataOffset = 0;
13519 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013520 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13521 wpt_uint8 bssIdx = 0;
13522
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13524
13525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 -------------------------------------------------------------------------*/
13528 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13531 {
13532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
13538 /*-----------------------------------------------------------------------
13539 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013543 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 {
13547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013548 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 pEventData, wdiExitUapsdRspCb);
13550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 }
13553
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13555
13556 wpalMemoryCopy( pSendBuffer+usDataOffset,
13557 &bssIdx,
13558 sizeof(wpt_uint8));
13559
13560 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13561 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13562
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13567 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013568}/*WDI_ProcessExitUapsdReq*/
13569
13570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013573
13574 @param pWDICtx: pointer to the WLAN DAL context
13575 pEventData: pointer to the event information structure
13576
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 @see
13578 @return Result of the function call
13579*/
13580WDI_Status
13581WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013582(
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 WDI_ControlBlockType* pWDICtx,
13584 WDI_EventInfoType* pEventData
13585)
13586{
13587 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13588 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 wpt_uint16 usDataOffset = 0;
13591 wpt_uint16 usSendSize = 0;
13592 tUapsdInfo uapsdAcParamsReq;
13593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13594
13595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
13598 if (( NULL == pEventData ) ||
13599 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13600 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13601 {
13602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 }
13607
13608 /*-----------------------------------------------------------------------
13609 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013610 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 sizeof(uapsdAcParamsReq),
13614 &pSendBuffer, &usDataOffset, &usSendSize))||
13615 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13616 {
13617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013618 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623
13624 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13625 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13626 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13627 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13628 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13629 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13630
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 wpalMemoryCopy( pSendBuffer+usDataOffset,
13632 &uapsdAcParamsReq,
13633 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013634
13635 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013637
13638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13642 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013643}/*WDI_ProcessSetUapsdAcParamsReq*/
13644
13645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013648
13649 @param pWDICtx: pointer to the WLAN DAL context
13650 pEventData: pointer to the event information structure
13651
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 @see
13653 @return Result of the function call
13654*/
13655WDI_Status
13656WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013657(
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 WDI_ControlBlockType* pWDICtx,
13659 WDI_EventInfoType* pEventData
13660)
13661{
13662 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13663 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 wpt_uint16 usDataOffset = 0;
13666 wpt_uint16 usSendSize = 0;
13667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13668
13669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 -------------------------------------------------------------------------*/
13672 if (( NULL == pEventData ) ||
13673 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13674 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13675 {
13676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 }
13681
13682 /*-----------------------------------------------------------------------
13683 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13688 &pSendBuffer, &usDataOffset, &usSendSize))||
13689 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13690 {
13691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013692 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 }
13697
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 wpalMemoryCopy( pSendBuffer+usDataOffset,
13699 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13700 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013701
13702 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13709 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013710}/*WDI_ProcessUpdateUapsdParamsReq*/
13711
13712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013715
13716 @param pWDICtx: pointer to the WLAN DAL context
13717 pEventData: pointer to the event information structure
13718
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 @see
13720 @return Result of the function call
13721*/
13722WDI_Status
13723WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013724(
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 WDI_ControlBlockType* pWDICtx,
13726 WDI_EventInfoType* pEventData
13727)
13728{
13729 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13730 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 wpt_uint16 usDataOffset = 0;
13733 wpt_uint16 usSendSize = 0;
13734 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13735
13736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13737
13738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 -------------------------------------------------------------------------*/
13741 if (( NULL == pEventData ) ||
13742 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13743 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13744 {
13745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
13751 /*-----------------------------------------------------------------------
13752 Get message buffer
13753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 sizeof(halRxpFilterParams),
13756 &pSendBuffer, &usDataOffset, &usSendSize))||
13757 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13758 {
13759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013760 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 }
13765
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13770
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 wpalMemoryCopy( pSendBuffer+usDataOffset,
13772 &halRxpFilterParams,
13773 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013774
13775 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777
13778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13782 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013783}/*WDI_ProcessConfigureRxpFilterReq*/
13784
13785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013788
13789 @param pWDICtx: pointer to the WLAN DAL context
13790 pEventData: pointer to the event information structure
13791
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 @see
13793 @return Result of the function call
13794*/
13795WDI_Status
13796WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013797(
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_ControlBlockType* pWDICtx,
13799 WDI_EventInfoType* pEventData
13800)
13801{
13802 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13803 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 wpt_uint16 usDataOffset = 0;
13806 wpt_uint16 usSendSize = 0;
13807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13808
13809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 -------------------------------------------------------------------------*/
13812 if (( NULL == pEventData ) ||
13813 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13814 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13815 {
13816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 }
13821
13822 /*-----------------------------------------------------------------------
13823 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13828 &pSendBuffer, &usDataOffset, &usSendSize))||
13829 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13830 {
13831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013832 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 }
13837
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpalMemoryCopy( pSendBuffer+usDataOffset,
13839 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13840 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13841 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13842 &pwdiBeaconFilterParams->aFilters[0],
13843 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013844
13845 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013847
13848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13852 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013853}/*WDI_ProcessSetBeaconFilterReq*/
13854
13855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013858
13859 @param pWDICtx: pointer to the WLAN DAL context
13860 pEventData: pointer to the event information structure
13861
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 @see
13863 @return Result of the function call
13864*/
13865WDI_Status
13866WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013867(
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 WDI_ControlBlockType* pWDICtx,
13869 WDI_EventInfoType* pEventData
13870)
13871{
13872 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13873 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 wpt_uint16 usDataOffset = 0;
13876 wpt_uint16 usSendSize = 0;
13877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13878
13879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 -------------------------------------------------------------------------*/
13882 if (( NULL == pEventData ) ||
13883 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13884 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13885 {
13886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
13892 /*-----------------------------------------------------------------------
13893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13898 &pSendBuffer, &usDataOffset, &usSendSize))||
13899 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13900 {
13901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013902 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 }
13907
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wpalMemoryCopy( pSendBuffer+usDataOffset,
13909 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13910 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013911
13912 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914
13915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13919 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013920}
13921
13922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013925
13926 @param pWDICtx: pointer to the WLAN DAL context
13927 pEventData: pointer to the event information structure
13928
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 @see
13930 @return Result of the function call
13931*/
13932WDI_Status
13933WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013934(
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 WDI_ControlBlockType* pWDICtx,
13936 WDI_EventInfoType* pEventData
13937)
13938{
13939 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13940 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 wpt_uint16 usDataOffset = 0;
13943 wpt_uint16 usSendSize = 0;
13944 tHalRSSIThresholds rssiThresholdsReq;
13945 WDI_Status ret_status = 0;
13946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13947
13948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 -------------------------------------------------------------------------*/
13951 if (( NULL == pEventData ) ||
13952 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13953 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13954 {
13955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 }
13960
13961 /*-----------------------------------------------------------------------
13962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 sizeof(rssiThresholdsReq),
13967 &pSendBuffer, &usDataOffset, &usSendSize))||
13968 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13969 {
13970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013971 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 }
13976
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13997
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 wpalMemoryCopy( pSendBuffer+usDataOffset,
13999 &rssiThresholdsReq,
14000 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
14002 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004
14005 /*-------------------------------------------------------------------------
14006 Send Set threshold req to HAL
14007 -------------------------------------------------------------------------*/
14008 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14009 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14010 {
14011 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14012 // req. Then as a result of processing the threshold cross ind, we trigger
14013 // a Set threshold req, then we need to indicate to WDI that it needs to
14014 // go to busy state as a result of the indication as we sent a req in the
14015 // same WDI context.
14016 // Hence expected state transition is to busy.
14017 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14018 }
14019
14020 return ret_status;
14021}
14022
14023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014026
14027 @param pWDICtx: pointer to the WLAN DAL context
14028 pEventData: pointer to the event information structure
14029
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 @see
14031 @return Result of the function call
14032*/
14033WDI_Status
14034WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014035(
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ControlBlockType* pWDICtx,
14037 WDI_EventInfoType* pEventData
14038)
14039{
14040 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14041 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 wpt_uint16 usDataOffset = 0;
14044 wpt_uint16 usSendSize = 0;
14045 tHalHostOffloadReq hostOffloadParams;
14046 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014047 wpt_uint8 ucCurrentBSSSesIdx = 0;
14048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049
14050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pEventData ) ||
14056 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14057 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14058 {
14059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014062 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 }
14064
14065 /*-----------------------------------------------------------------------
14066 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14071 &pSendBuffer, &usDataOffset, &usSendSize))||
14072 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14073 {
14074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014075 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14077 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014078 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 }
14080
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14082 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14083 &pBSSSes);
14084 if ( NULL == pBSSSes )
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053014087 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14088 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014089 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014090 }
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14093 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14096 {
14097 // ARP Offload
14098 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14099 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14100 4);
14101 }
14102 else
14103 {
14104 // NS Offload
14105 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14106 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14107 16);
14108
14109#ifdef WLAN_NS_OFFLOAD
14110 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14111 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14112 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14113 16);
14114 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14115 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14116 16);
14117 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14118 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14119 16);
14120 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14125 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053014126 nsOffloadParams.srcIPv6AddrValid =
14127 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14128
14129 nsOffloadParams.targetIPv6Addr1Valid =
14130 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14131
14132 nsOffloadParams.targetIPv6Addr2Valid =
14133 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14134
14135 nsOffloadParams.slotIndex =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137
Jeff Johnson295189b2012-06-20 16:38:30 -070014138#endif // WLAN_NS_OFFLOAD
14139 }
14140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014141 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14142
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 // copy hostOffloadParams into pSendBuffer
14144 wpalMemoryCopy( pSendBuffer+usDataOffset,
14145 &hostOffloadParams,
14146 sizeof(hostOffloadParams));
14147
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014148 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014150 // copy nsOffloadParams into pSendBuffer
14151 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 &nsOffloadParams,
14153 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014154 }
14155 else
14156 {
14157#ifdef WLAN_NS_OFFLOAD
14158 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14159 {
14160 // copy nsOffloadParams into pSendBuffer
14161 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14162 &nsOffloadParams,
14163 sizeof(nsOffloadParams));
14164 }
14165#endif
14166 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014167
14168 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014170
14171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14175 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014176
14177fail:
14178 // Release the message buffer so we don't leak
14179 wpalMemoryFree(pSendBuffer);
14180
14181failRequest:
14182 //WDA should have failure check to avoid the memory leak
14183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014184}/*WDI_ProcessHostOffloadReq*/
14185
14186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014189
14190 @param pWDICtx: pointer to the WLAN DAL context
14191 pEventData: pointer to the event information structure
14192
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 @see
14194 @return Result of the function call
14195*/
14196WDI_Status
14197WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014198(
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ControlBlockType* pWDICtx,
14200 WDI_EventInfoType* pEventData
14201)
14202{
14203 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14204 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 wpt_uint16 usDataOffset = 0;
14207 wpt_uint16 usSendSize = 0;
14208 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014209 wpt_uint8 ucCurrentBSSSesIdx = 0;
14210 WDI_BSSSessionType* pBSSSes = NULL;
14211
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14213
14214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 -------------------------------------------------------------------------*/
14217 if (( NULL == pEventData ) ||
14218 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14219 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14222 "Invalid parameters in Keep Alive req");
14223 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014224 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 }
14226
14227 /*-----------------------------------------------------------------------
14228 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 sizeof(keepAliveReq),
14233 &pSendBuffer, &usDataOffset, &usSendSize))||
14234 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14235 {
14236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014237 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14239 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014240 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014243 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14244 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14245 &pBSSSes);
14246 if ( NULL == pBSSSes )
14247 {
14248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014249 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014250 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014251 }
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14254 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14255
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014256 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14259 {
14260 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14261 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14262 HAL_IPV4_ADDR_LEN);
14263 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14264 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpalMemoryCopy(keepAliveReq.destMacAddr,
14267 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14268 HAL_MAC_ADDR_LEN);
14269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014270
14271 wpalMemoryCopy( pSendBuffer+usDataOffset,
14272 &keepAliveReq,
14273 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014274
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014276 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014277
14278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014279 "Process keep alive req time period %d",
14280 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014281
14282 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014284
14285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14286 "Sending keep alive req to HAL");
14287
14288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14292 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014293
14294fail:
14295 // Release the message buffer so we don't leak
14296 wpalMemoryFree(pSendBuffer);
14297
14298failRequest:
14299 //WDA should have failure check to avoid the memory leak
14300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301}/*WDI_ProcessKeepAliveReq*/
14302
14303
14304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014307
14308 @param pWDICtx: pointer to the WLAN DAL context
14309 pEventData: pointer to the event information structure
14310
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 @see
14312 @return Result of the function call
14313*/
14314WDI_Status
14315WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014316(
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 WDI_ControlBlockType* pWDICtx,
14318 WDI_EventInfoType* pEventData
14319)
14320{
14321 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14322 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 wpt_uint16 usDataOffset = 0;
14325 wpt_uint16 usSendSize = 0;
14326 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014327 wpt_uint8 ucCurrentBSSSesIdx = 0;
14328 WDI_BSSSessionType* pBSSSes = NULL;
14329
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14331
14332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 -------------------------------------------------------------------------*/
14335 if (( NULL == pEventData ) ||
14336 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14337 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014342 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 }
14344
14345 /*-----------------------------------------------------------------------
14346 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 sizeof(wowlAddBcPtrnReq),
14351 &pSendBuffer, &usDataOffset, &usSendSize))||
14352 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14353 {
14354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014355 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14357 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014358 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 }
14360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014361 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14363 &pBSSSes);
14364 if ( NULL == pBSSSes )
14365 {
14366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014367 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014368 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014369 }
14370
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14379
14380 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14381 {
14382 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14388 }
14389 else
14390 {
14391 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14393 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14394 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14395 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14396 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14397
14398 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14399 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14400 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14401 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14402 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14404 }
14405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014406 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14407
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 wpalMemoryCopy( pSendBuffer+usDataOffset,
14409 &wowlAddBcPtrnReq,
14410 sizeof(wowlAddBcPtrnReq));
14411
14412 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414
14415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14419 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014420fail:
14421 // Release the message buffer so we don't leak
14422 wpalMemoryFree(pSendBuffer);
14423
14424failRequest:
14425 //WDA should have failure check to avoid the memory leak
14426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427}/*WDI_ProcessWowlAddBcPtrnReq*/
14428
14429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014432
14433 @param pWDICtx: pointer to the WLAN DAL context
14434 pEventData: pointer to the event information structure
14435
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 @see
14437 @return Result of the function call
14438*/
14439WDI_Status
14440WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014441(
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 WDI_ControlBlockType* pWDICtx,
14443 WDI_EventInfoType* pEventData
14444)
14445{
14446 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14447 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 wpt_uint16 usDataOffset = 0;
14450 wpt_uint16 usSendSize = 0;
14451 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014452 wpt_uint8 ucCurrentBSSSesIdx = 0;
14453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14455
14456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -------------------------------------------------------------------------*/
14459 if (( NULL == pEventData ) ||
14460 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14461 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014466 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 }
14468
14469 /*-----------------------------------------------------------------------
14470 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 sizeof(wowlDelBcPtrnReq),
14475 &pSendBuffer, &usDataOffset, &usSendSize))||
14476 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14477 {
14478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014479 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14481 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014482 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 }
14484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014485 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14486 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14487 &pBSSSes);
14488 if ( NULL == pBSSSes )
14489 {
14490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014491 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014492 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014493 }
14494
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014497
14498 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14499
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 wpalMemoryCopy( pSendBuffer+usDataOffset,
14501 &wowlDelBcPtrnReq,
14502 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014503
14504 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014506
14507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14511 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014512
14513fail:
14514 // Release the message buffer so we don't leak
14515 wpalMemoryFree(pSendBuffer);
14516
14517failRequest:
14518 //WDA should have failure check to avoid the memory leak
14519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520}/*WDI_ProcessWowlDelBcPtrnReq*/
14521
14522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
14526 @param pWDICtx: pointer to the WLAN DAL context
14527 pEventData: pointer to the event information structure
14528
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 @see
14530 @return Result of the function call
14531*/
14532WDI_Status
14533WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014534(
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 WDI_ControlBlockType* pWDICtx,
14536 WDI_EventInfoType* pEventData
14537)
14538{
14539 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14540 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 wpt_uint16 usDataOffset = 0;
14543 wpt_uint16 usSendSize = 0;
14544 tHalWowlEnterParams wowlEnterReq;
14545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14546
14547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 -------------------------------------------------------------------------*/
14550 if (( NULL == pEventData ) ||
14551 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14552 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14553 {
14554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 }
14559
14560 /*-----------------------------------------------------------------------
14561 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 sizeof(wowlEnterReq),
14566 &pSendBuffer, &usDataOffset, &usSendSize))||
14567 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14568 {
14569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014570 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 }
14575
Kumar Anand21a26022013-07-22 14:35:34 -070014576 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14577
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14594
14595#ifdef WLAN_WAKEUP_EVENTS
14596 wowlEnterReq.ucWoWEAPIDRequestEnable =
14597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14598
14599 wowlEnterReq.ucWoWEAPOL4WayEnable =
14600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14601
14602 wowlEnterReq.ucWowNetScanOffloadMatch =
14603 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14604
14605 wowlEnterReq.ucWowGTKRekeyError =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14607
14608 wowlEnterReq.ucWoWBSSConnLoss =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14610#endif // WLAN_WAKEUP_EVENTS
14611
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014612 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14613
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14615 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14616 sizeof(tSirMacAddr));
14617
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 wpalMemoryCopy( pSendBuffer+usDataOffset,
14619 &wowlEnterReq,
14620 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014621
14622 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624
14625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14629 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014630}/*WDI_ProcessWowlEnterReq*/
14631
14632/**
14633 @brief Process Wowl exit Request function (called when Main FSM
14634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014635
14636 @param pWDICtx: pointer to the WLAN DAL context
14637 pEventData: pointer to the event information structure
14638
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 @see
14640 @return Result of the function call
14641*/
14642WDI_Status
14643WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014644(
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ControlBlockType* pWDICtx,
14646 WDI_EventInfoType* pEventData
14647)
14648{
14649 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014650 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 wpt_uint16 usDataOffset = 0;
14653 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014654 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14656
14657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -------------------------------------------------------------------------*/
14660 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014661 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
14670 /*-----------------------------------------------------------------------
14671 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014675 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014677 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 {
14679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014680 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 pEventData, wdiWowlExitCb);
14682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 }
14685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014686 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14687
14688 wpalMemoryCopy( pSendBuffer+usDataOffset,
14689 &wowlExitparams,
14690 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14695 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014696}/*WDI_ProcessWowlExitReq*/
14697
14698/**
14699 @brief Process Configure Apps Cpu Wakeup State Request function
14700 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014701
14702 @param pWDICtx: pointer to the WLAN DAL context
14703 pEventData: pointer to the event information structure
14704
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 @see
14706 @return Result of the function call
14707*/
14708WDI_Status
14709WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014710(
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 WDI_ControlBlockType* pWDICtx,
14712 WDI_EventInfoType* pEventData
14713)
14714{
14715 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14716 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 wpt_uint16 usDataOffset = 0;
14719 wpt_uint16 usSendSize = 0;
14720 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14722
14723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 -------------------------------------------------------------------------*/
14726 if (( NULL == pEventData ) ||
14727 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14728 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14729 {
14730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 }
14735
14736 /*-----------------------------------------------------------------------
14737 Get message buffer
14738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 sizeof(halCfgAppsCpuWakeupStateReqParams),
14741 &pSendBuffer, &usDataOffset, &usSendSize))||
14742 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14743 {
14744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014745 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 }
14750
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 wpalMemoryCopy( pSendBuffer+usDataOffset,
14755 &halCfgAppsCpuWakeupStateReqParams,
14756 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
14758 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14765 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14766 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014767}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14768
14769#ifdef WLAN_FEATURE_VOWIFI_11R
14770/**
14771 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14772 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014773
14774 @param pWDICtx: pointer to the WLAN DAL context
14775 pEventData: pointer to the event information structure
14776
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 @see
14778 @return Result of the function call
14779*/
14780WDI_Status
14781WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014782(
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 WDI_ControlBlockType* pWDICtx,
14784 WDI_EventInfoType* pEventData
14785)
14786{
14787 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14788 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 wpt_uint16 usDataOffset = 0;
14793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 wpt_macAddr macBSSID;
14796 tAggrAddTsReq halAggrAddTsReq;
14797 int i;
14798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14804 ( NULL == pEventData->pCBfnc ))
14805 {
14806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 }
14811 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14812 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14813 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14814 /*-------------------------------------------------------------------------
14815 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -------------------------------------------------------------------------*/
14818 wpalMutexAcquire(&pWDICtx->wptMutex);
14819
14820 /*------------------------------------------------------------------------
14821 Find the BSS for which the request is made and identify WDI session
14822 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14824 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 &macBSSID))
14826 {
14827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014828 "This station does not exist in the WDI Station Table %d",
14829 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 }
14833
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14835 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14838 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14839 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014840
14841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 /*------------------------------------------------------------------------
14846 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 ------------------------------------------------------------------------*/
14849 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14850 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14852 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14853 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014854
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 }
14859
14860 wpalMutexRelease(&pWDICtx->wptMutex);
14861 /*-----------------------------------------------------------------------
14862 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 sizeof(tAggrAddTsParams),
14867 &pSendBuffer, &usDataOffset, &usSendSize))||
14868 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14869 {
14870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014871 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 }
14876
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14881
14882 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14883 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14890 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14893 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14896 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917
14918 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14948 }
14949
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 wpalMemoryCopy( pSendBuffer+usDataOffset,
14951 &halAggrAddTsReq,
14952 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014953
14954 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956
14957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014963}/*WDI_ProcessAggrAddTSpecReq*/
14964#endif /* WLAN_FEATURE_VOWIFI_11R */
14965
14966/**
14967 @brief Process Shutdown Request function (called when Main FSM
14968 allows it)
14969
14970 @param pWDICtx: pointer to the WLAN DAL context
14971 pEventData: pointer to the event information structure
14972
14973 @see
14974 @return Result of the function call
14975*/
14976WDI_Status
14977WDI_ProcessShutdownReq
14978(
14979 WDI_ControlBlockType* pWDICtx,
14980 WDI_EventInfoType* pEventData
14981 )
14982{
14983 wpt_status wptStatus;
14984
14985
14986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14987
14988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -------------------------------------------------------------------------*/
14991 if ( NULL == pEventData )
14992 {
14993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_ASSERT(0);
14996 return WDI_STATUS_E_FAILURE;
14997 }
14998
14999 wpalMutexAcquire(&pWDICtx->wptMutex);
15000
15001
15002 gWDIInitialized = eWLAN_PAL_FALSE;
15003 /*! TO DO: stop the data services */
15004 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15005 {
15006 /*Stop the STA Table !UT- check this logic again
15007 It is safer to do it here than on the response - because a stop is imminent*/
15008 WDI_STATableStop(pWDICtx);
15009
15010 /* Stop Transport Driver, DXE */
15011 WDTS_Stop(pWDICtx);
15012 }
15013
15014 /*Clear all pending request*/
15015 WDI_ClearPendingRequests(pWDICtx);
15016 /* Close Data transport*/
15017 /* FTM mode does not open Data Path */
15018 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15019 {
15020 WDTS_Close(pWDICtx);
15021 }
15022 /*Close the STA Table !UT- check this logic again*/
15023 WDI_STATableClose(pWDICtx);
15024 /*close the PAL */
15025 wptStatus = wpalClose(pWDICtx->pPALContext);
15026 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15027 {
15028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15029 "Failed to wpal Close %d", wptStatus);
15030 WDI_ASSERT(0);
15031 }
15032
15033 /*Transition back to init state*/
15034 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15035
15036 wpalMutexRelease(&pWDICtx->wptMutex);
15037
15038 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040
15041
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043}/*WDI_ProcessShutdownReq*/
15044
15045/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015047========================================================================*/
15048
15049/**
15050 @brief Process Start Response function (called when a response
15051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015052
15053 @param pWDICtx: pointer to the WLAN DAL context
15054 pEventData: pointer to the event information structure
15055
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 @see
15057 @return Result of the function call
15058*/
15059WDI_Status
15060WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015061(
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 WDI_ControlBlockType* pWDICtx,
15063 WDI_EventInfoType* pEventData
15064)
15065{
15066 WDI_StartRspParamsType wdiRspParams;
15067 WDI_StartRspCb wdiStartRspCb = NULL;
15068
15069 tHalMacStartRspParams* startRspParams;
15070
15071#ifndef HAL_SELF_STA_PER_BSS
15072 WDI_AddStaParams wdiAddSTAParam = {0};
15073#endif
15074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 -------------------------------------------------------------------------*/
15080 if (( NULL == pEventData ) ||
15081 ( NULL == pEventData->pEventData) ||
15082 ( NULL == wdiStartRspCb ))
15083 {
15084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 }
15089
15090 /*-------------------------------------------------------------------------
15091 Extract response and send it to UMAC
15092 -------------------------------------------------------------------------*/
15093 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15094 {
15095 // not enough data was received
15096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson27c67c82013-11-22 16:44:20 -080015097 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 }
15102
15103 /*-------------------------------------------------------------------------
15104 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 -------------------------------------------------------------------------*/
15107 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15108
15109 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15110 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15111 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15112 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15113 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15114 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15115 wdiRspParams.wlanReportedVersion.major =
15116 startRspParams->wcnssWlanVersion.major;
15117 wdiRspParams.wlanReportedVersion.minor =
15118 startRspParams->wcnssWlanVersion.minor;
15119 wdiRspParams.wlanReportedVersion.version =
15120 startRspParams->wcnssWlanVersion.version;
15121 wdiRspParams.wlanReportedVersion.revision =
15122 startRspParams->wcnssWlanVersion.revision;
15123 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15124 startRspParams->wcnssCrmVersionString,
15125 sizeof(wdiRspParams.wcnssSoftwareVersion));
15126 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15127 startRspParams->wcnssWlanVersionString,
15128 sizeof(wdiRspParams.wcnssHardwareVersion));
15129 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15130
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015131 /*Save the HAL Version*/
15132 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 wpalMutexAcquire(&pWDICtx->wptMutex);
15135 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15136 {
15137 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15138
15139 /*Cache the start response for further use*/
15140 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 sizeof(pWDICtx->wdiCachedStartRspParams));
15143
15144 }
15145 else
15146 {
15147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15148 "Failed to start device with status %s(%d)",
15149 WDI_getHALStatusMsgString(startRspParams->status),
15150 startRspParams->status);
15151
15152 /*Set the expected state transition to stopped - because the start has
15153 failed*/
15154 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15155
15156 wpalMutexRelease(&pWDICtx->wptMutex);
15157
15158 /*Notify UMAC*/
15159 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015160
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15162
15163 /*Although the response is an error - it was processed by our function
15164 so as far as the caller is concerned this is a succesful reponse processing*/
15165 return WDI_STATUS_SUCCESS;
15166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015167
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 wpalMutexRelease(&pWDICtx->wptMutex);
15169
15170 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15171 {
15172 /* FTM mode does not need to execute below */
15173 /* Notify UMAC */
15174 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15175 return WDI_STATUS_SUCCESS;
15176 }
15177
15178 /* START the Data transport */
15179 WDTS_startTransport(pWDICtx);
15180
15181 /*Start the STA Table !- check this logic again*/
15182 WDI_STATableStart(pWDICtx);
15183
15184#ifndef HAL_SELF_STA_PER_BSS
15185 /* Store the Self STA Index */
15186 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15187
15188 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15189 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15190 WDI_MAC_ADDR_LEN);
15191
15192 /* At this point add the self-STA */
15193
15194 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15195 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15196 /*! TO DO: wdiAddSTAParam.dpuSig */
15197 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15198 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15199 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15200
15201 //all DPU indices are the same for self STA
15202 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15203 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015204 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15206 WDI_MAC_ADDR_LEN);
15207 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15208 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15209
15210 /* Note: Since we don't get an explicit config STA request for self STA, we
15211 add the self STA upon receiving the Start response message. But the
15212 self STA entry in the table is deleted when WDI gets an explicit delete STA
15213 request */
15214 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15215#endif
15216
15217 /*Notify UMAC*/
15218 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15219
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221}/*WDI_ProcessStartRsp*/
15222
15223
15224/**
15225 @brief Process Stop Response function (called when a response
15226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015227
15228 @param pWDICtx: pointer to the WLAN DAL context
15229 pEventData: pointer to the event information structure
15230
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 @see
15232 @return Result of the function call
15233*/
15234WDI_Status
15235WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015236(
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 WDI_ControlBlockType* pWDICtx,
15238 WDI_EventInfoType* pEventData
15239)
15240{
15241 WDI_Status wdiStatus;
15242 WDI_StopRspCb wdiStopRspCb = NULL;
15243
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15246
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 -------------------------------------------------------------------------*/
15251 if (( NULL == pEventData ) ||
15252 ( NULL == pEventData->pEventData) ||
15253 ( NULL == wdiStopRspCb ))
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 }
15260
15261 /*-------------------------------------------------------------------------
15262 Extract response and send it to UMAC
15263 -------------------------------------------------------------------------*/
15264 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15265 {
15266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015267 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 pEventData->uEventDataSize);
15269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 }
15272
15273 /*-------------------------------------------------------------------------
15274 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15278 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 sizeof(halMacStopRspMsg.stopRspParams));
15280
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
15283 wpalMutexAcquire(&pWDICtx->wptMutex);
15284
15285 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 --------------------------------------------------------------------------*/
15288 if ( WDI_STATUS_SUCCESS != wdiStatus )
15289 {
15290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15291 "Failed to stop the device with status %s (%d)",
15292 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15293 halMacStopRspMsg.stopRspParams.status);
15294
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15302
15303 /*Transition now as WDI may get preempted imediately after it sends
15304 up the Stop Response and it will not get to process the state transition
15305 from Main Rsp function*/
15306 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15307 wpalMutexRelease(&pWDICtx->wptMutex);
15308
15309 /*! TO DO: - STOP the Data transport */
15310
15311 /*Notify UMAC*/
15312 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15313
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315}/*WDI_ProcessStopRsp*/
15316
15317/**
15318 @brief Process Close Rsp function (called when a response
15319 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015320
15321 @param pWDICtx: pointer to the WLAN DAL context
15322 pEventData: pointer to the event information structure
15323
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 @see
15325 @return Result of the function call
15326*/
15327WDI_Status
15328WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015329(
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ControlBlockType* pWDICtx,
15331 WDI_EventInfoType* pEventData
15332)
15333{
15334 /*There is no close response comming from HAL - function just kept for
15335 simmetry */
15336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015338}/*WDI_ProcessCloseRsp*/
15339
15340
15341/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015343============================================================================*/
15344
15345/**
15346 @brief Process Init Scan Rsp function (called when a response
15347 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015348
15349 @param pWDICtx: pointer to the WLAN DAL context
15350 pEventData: pointer to the event information structure
15351
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 @see
15353 @return Result of the function call
15354*/
15355WDI_Status
15356WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015357(
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 WDI_ControlBlockType* pWDICtx,
15359 WDI_EventInfoType* pEventData
15360)
15361{
15362 WDI_Status wdiStatus;
15363 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015365 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
15371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15372 ( NULL == pEventData->pEventData))
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 }
15379
15380 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15381 if( NULL == wdiInitScanRspCb)
15382 {
15383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015384 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 }
15388
15389 /*-------------------------------------------------------------------------
15390 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15394 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 sizeof(halInitScanRspMsg.initScanRspParams));
15396
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015398
15399 if ( pWDICtx->bInBmps )
15400 {
15401 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015402 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15403 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015405 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015406 WDI_ASSERT(0);
15407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 }
15409
15410 /*Notify UMAC*/
15411 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15412
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015414}/*WDI_ProcessInitScanRsp*/
15415
15416
15417/**
15418 @brief Process Start Scan Rsp function (called when a response
15419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015420
15421 @param pWDICtx: pointer to the WLAN DAL context
15422 pEventData: pointer to the event information structure
15423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 @see
15425 @return Result of the function call
15426*/
15427WDI_Status
15428WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015429(
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ControlBlockType* pWDICtx,
15431 WDI_EventInfoType* pEventData
15432)
15433{
15434 WDI_StartScanRspParamsType wdiStartScanParams;
15435 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015436
15437 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15439
15440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 -------------------------------------------------------------------------*/
15443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15444 ( NULL == pEventData->pEventData))
15445 {
15446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 }
15451
15452 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15453 if( NULL == wdiStartScanRspCb)
15454 {
15455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015456 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 }
15460
15461 /*-------------------------------------------------------------------------
15462 Extract response and send it to UMAC
15463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15465 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 sizeof(halStartScanRspMsg.startScanRspParams));
15467
15468 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15469 halStartScanRspMsg.startScanRspParams.status);
15470#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 halStartScanRspMsg.startScanRspParams.startTSF,
15475 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015476#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015477
15478 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15479 {
15480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15481 "Start scan failed with status %s (%d)",
15482 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15483 halStartScanRspMsg.startScanRspParams.status);
15484 /* send the status to UMAC, don't return from here*/
15485 }
15486
15487 /*Notify UMAC*/
15488 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15489
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015491
15492}/*WDI_ProcessStartScanRsp*/
15493
15494
15495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015498
15499 @param pWDICtx: pointer to the WLAN DAL context
15500 pEventData: pointer to the event information structure
15501
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 @see
15503 @return Result of the function call
15504*/
15505WDI_Status
15506WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015507(
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ControlBlockType* pWDICtx,
15509 WDI_EventInfoType* pEventData
15510)
15511{
15512 WDI_Status wdiStatus;
15513 tHalEndScanRspMsg halEndScanRspMsg;
15514 WDI_EndScanRspCb wdiEndScanRspCb;
15515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15516
15517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 -------------------------------------------------------------------------*/
15520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15521 ( NULL == pEventData->pEventData))
15522 {
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
15529 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15530
15531 /*-------------------------------------------------------------------------
15532 Extract response and send it to UMAC
15533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15535 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 sizeof(halEndScanRspMsg.endScanRspParams));
15537
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015539
15540 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15541 {
15542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15543 "End Scan failed with status %s (%d )",
15544 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15545 halEndScanRspMsg.endScanRspParams.status);
15546 /* send the status to UMAC, don't return from here*/
15547 }
15548
15549 /*Notify UMAC*/
15550 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15551
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553}/*WDI_ProcessEndScanRsp*/
15554
15555
15556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
15560 @param pWDICtx: pointer to the WLAN DAL context
15561 pEventData: pointer to the event information structure
15562
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 @see
15564 @return Result of the function call
15565*/
15566WDI_Status
15567WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015568(
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 WDI_ControlBlockType* pWDICtx,
15570 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015571)
Jeff Johnson295189b2012-06-20 16:38:30 -070015572{
15573 WDI_Status wdiStatus;
15574 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575
15576 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15583 ( NULL == pEventData->pEventData))
15584 {
15585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 }
15590
15591 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15592
15593 /*-------------------------------------------------------------------------
15594 Extract response and send it to UMAC
15595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15597 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015601
15602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 halFinishScanRspMsg.finishScanRspParams.status);
15605
15606 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15607 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15610 "Finish Scan failed with status %s (%d)",
15611 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15612 halFinishScanRspMsg.finishScanRspParams.status);
15613 /* send the status to UMAC, don't return from here*/
15614 }
15615
15616 /*Notify UMAC*/
15617 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15618
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015620}/*WDI_ProcessFinishScanRsp*/
15621
15622/**
15623 @brief Process Join Response function (called when a response
15624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015625
15626 @param pWDICtx: pointer to the WLAN DAL context
15627 pEventData: pointer to the event information structure
15628
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 @see
15630 @return Result of the function call
15631*/
15632WDI_Status
15633WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015634(
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 WDI_ControlBlockType* pWDICtx,
15636 WDI_EventInfoType* pEventData
15637)
15638{
15639 WDI_Status wdiStatus;
15640 WDI_JoinRspCb wdiJoinRspCb;
15641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642
15643 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15645
15646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 -------------------------------------------------------------------------*/
15649 if (( NULL == pWDICtx ) ||
15650 ( NULL == pWDICtx->pfncRspCB ) ||
15651 ( NULL == pEventData ) ||
15652 ( NULL == pEventData->pEventData))
15653 {
15654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 }
15659
15660 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15661
15662 /*-------------------------------------------------------------------------
15663 Extract response and send it to UMAC
15664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 sizeof(halJoinRspMsg.joinRspParams));
15668
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015670
15671 wpalMutexAcquire(&pWDICtx->wptMutex);
15672
15673 /*-----------------------------------------------------------------------
15674 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15679 {
15680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15682 "association no longer in progress %d - mysterious HAL response",
15683 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015684
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 }
15689
15690 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15691
15692 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 -----------------------------------------------------------------------*/
15695 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15696 {
15697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15698 "Join only allowed in Joining state - failure state is %d "
15699 "strange HAL response", pBSSSes->wdiAssocState);
15700
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15702
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 }
15706
15707
15708 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
15711 if ( WDI_STATUS_SUCCESS != wdiStatus )
15712 {
15713 /*Association was failed by HAL - remove session*/
15714 WDI_DeleteSession(pWDICtx, pBSSSes);
15715
15716 /*Association no longer in progress */
15717 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15718
15719 /*Association no longer in progress - prepare pending assoc for processing*/
15720 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015721
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 }
15723 else
15724 {
15725 /*Transition to state Joining - this may be redundant as we are supposed
15726 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
15729
15730 wpalMutexRelease(&pWDICtx->wptMutex);
15731
15732 /*Notify UMAC*/
15733 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15734
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015736}/*WDI_ProcessJoinRsp*/
15737
15738
15739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015742
15743 @param pWDICtx: pointer to the WLAN DAL context
15744 pEventData: pointer to the event information structure
15745
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 @see
15747 @return Result of the function call
15748*/
15749WDI_Status
15750WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015751(
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 WDI_ControlBlockType* pWDICtx,
15753 WDI_EventInfoType* pEventData
15754)
15755{
15756 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15757 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 WDI_BSSSessionType* pBSSSes = NULL;
15760
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15763 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015764
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15766
15767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 -------------------------------------------------------------------------*/
15770 if (( NULL == pEventData ) ||
15771 ( NULL == pEventData->pEventData))
15772 {
15773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 }
15778
15779 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15780
15781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 sizeof(halConfigBssRspMsg.configBssRspParams));
15787
15788 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15789 halConfigBssRspMsg.configBssRspParams.status);
15790 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15791 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15794 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015797
15798 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15809 #endif
15810 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15811 halConfigBssRspMsg.configBssRspParams.staMac,
15812 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015813
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 wpalMutexAcquire(&pWDICtx->wptMutex);
15815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15819 wdiConfigBSSParams.macBSSID,
15820 &pBSSSes);
15821
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 /*-----------------------------------------------------------------------
15823 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 -----------------------------------------------------------------------*/
15826 if ( NULL == pBSSSes )
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15829 "Association sequence for this BSS does not yet exist "
15830 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015831
15832 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015837
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 /*Save data for this BSS*/
15839 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15840 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15851 pBSSSes->bcastStaIdx =
15852 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 /*-------------------------------------------------------------------------
15857 Add Peer STA
15858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15861 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wdiAddSTAParam.ucHTCapable =
15867 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15868 wdiAddSTAParam.ucStaType =
15869 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15870
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15873 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015875
15876 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15877 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15878 WDI_MAC_ADDR_LEN);
15879
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15895 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15898 /*-------------------------------------------------------------------------
15899 Add Broadcast STA only in AP mode
15900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015902 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 {
15904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15905 "Add BCAST STA to table for index: %d",
15906 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15912 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15913 }
15914 wpalMutexRelease(&pWDICtx->wptMutex);
15915 }
15916 else
15917 {
15918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15919 "Config BSS RSP failed with status : %s(%d)",
15920 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 halConfigBssRspMsg.configBssRspParams.status);
15923
Jeff Johnsone7245742012-09-05 17:12:55 -070015924
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 /*Association was failed by HAL - remove session*/
15926 WDI_DeleteSession(pWDICtx, pBSSSes);
15927
15928 /*Association no longer in progress */
15929 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15930
15931 /*Association no longer in progress - prepare pending assoc for processing*/
15932 WDI_DequeueAssocRequest(pWDICtx);
15933
15934 }
15935
15936 /*Notify UMAC*/
15937 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15938
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940}/*WDI_ProcessConfigBSSRsp*/
15941
15942
15943/**
15944 @brief Process Del BSS Response function (called when a response
15945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015946
15947 @param pWDICtx: pointer to the WLAN DAL context
15948 pEventData: pointer to the event information structure
15949
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 @see
15951 @return Result of the function call
15952*/
15953WDI_Status
15954WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015955(
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 WDI_ControlBlockType* pWDICtx,
15957 WDI_EventInfoType* pEventData
15958)
15959{
15960 WDI_DelBSSRspParamsType wdiDelBSSParams;
15961 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 WDI_BSSSessionType* pBSSSes = NULL;
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15967
15968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -------------------------------------------------------------------------*/
15971 if (( NULL == pEventData ) ||
15972 ( NULL == pEventData->pEventData))
15973 {
15974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 }
15979
15980 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15981
15982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 sizeof(halDelBssRspMsg.deleteBssRspParams));
15988
15989
15990 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992
15993 wpalMutexAcquire(&pWDICtx->wptMutex);
15994
15995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15999 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16000 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
16002 /*-----------------------------------------------------------------------
16003 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 -----------------------------------------------------------------------*/
16006 if ( NULL == pBSSSes )
16007 {
16008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16009 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016010 "association no longer in progress - mysterious HAL response");
16011
16012 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16013
16014 wpalMutexRelease(&pWDICtx->wptMutex);
16015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016017
16018 /*Extract BSSID for the response to UMAC*/
16019 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16020 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16021
16022 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16023
16024 /*-----------------------------------------------------------------------
16025 The current session will be deleted
16026 -----------------------------------------------------------------------*/
16027 WDI_DeleteSession(pWDICtx, pBSSSes);
16028
16029
16030 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016031 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16032 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016034 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016035 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016036
16037 /* Delete the STA's in this BSS */
16038 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16039
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 wpalMutexRelease(&pWDICtx->wptMutex);
16041
16042 /*Notify UMAC*/
16043 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16044
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016046}/*WDI_ProcessDelBSSRsp*/
16047
16048/**
16049 @brief Process Post Assoc Rsp function (called when a response
16050 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016051
16052 @param pWDICtx: pointer to the WLAN DAL context
16053 pEventData: pointer to the event information structure
16054
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 @see
16056 @return Result of the function call
16057*/
16058WDI_Status
16059WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016060(
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 WDI_ControlBlockType* pWDICtx,
16062 WDI_EventInfoType* pEventData
16063)
16064{
16065 WDI_PostAssocRspParamsType wdiPostAssocParams;
16066 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16071
16072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 -------------------------------------------------------------------------*/
16075 if (( NULL == pEventData ) ||
16076 ( NULL == pEventData->pEventData))
16077 {
16078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 }
16083
16084 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16085
16086 /*-------------------------------------------------------------------------
16087 Extract response and send it to UMAC
16088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16090 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 sizeof(halPostAssocRspMsg.postAssocRspParams));
16092
16093 /*Extract the Post Assoc STA Params */
16094
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16101
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiPostAssocParams.wdiStatus =
16103 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016104
16105 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16106 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16108 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 WDI_MAC_ADDR_LEN);
16110
16111 /* Extract Post Assoc BSS Params */
16112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16114 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16115 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016116
16117 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16118 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16121 .macSTA, WDI_MAC_ADDR_LEN);
16122
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16128
16129 wdiPostAssocParams.bssParams.ucBSSIdx =
16130 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16131
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16134
16135 wpalMutexAcquire(&pWDICtx->wptMutex);
16136
16137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016143
16144 /*-----------------------------------------------------------------------
16145 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 -----------------------------------------------------------------------*/
16148 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16151 {
16152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16153 "Association sequence for this BSS does not yet exist or "
16154 "association no longer in progress - mysterious HAL response");
16155
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16157
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 }
16161
16162 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -----------------------------------------------------------------------*/
16165 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16166 {
16167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16168 "Post Assoc not allowed before JOIN - failing request "
16169 "strange HAL response");
16170
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16172
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 }
16176
16177 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 -----------------------------------------------------------------------*/
16180 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16181 {
16182 /*Association was failed by HAL - remove session*/
16183 WDI_DeleteSession(pWDICtx, pBSSSes);
16184 }
16185 else
16186 {
16187 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189
16190 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16202 }
16203
16204 /*Association no longer in progress */
16205 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16206
16207 /*Association no longer in progress - prepare pending assoc for processing*/
16208 WDI_DequeueAssocRequest(pWDICtx);
16209
16210 wpalMutexRelease(&pWDICtx->wptMutex);
16211
16212 /*Notify UMAC*/
16213 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16214
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016216}/*WDI_ProcessPostAssocRsp*/
16217
16218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016221
16222 @param pWDICtx: pointer to the WLAN DAL context
16223 pEventData: pointer to the event information structure
16224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 @see
16226 @return Result of the function call
16227*/
16228WDI_Status
16229WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016230(
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_ControlBlockType* pWDICtx,
16232 WDI_EventInfoType* pEventData
16233)
16234{
16235 WDI_DelSTARspParamsType wdiDelSTARsp;
16236 WDI_DelSTARspCb wdiDelSTARspCb;
16237 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16240
16241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 -------------------------------------------------------------------------*/
16244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16245 ( NULL == pEventData->pEventData))
16246 {
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 }
16252
16253 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16254
16255 /*-------------------------------------------------------------------------
16256 Extract response and send it to UMAC
16257 -------------------------------------------------------------------------*/
16258 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 sizeof(halDelStaRspMsg.delStaRspParams));
16261
16262 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 wdiDelSTARsp.wdiStatus =
16264 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265
16266 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16267
16268 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16269 if(staType == WDI_STA_ENTRY_SELF)
16270 {
16271 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16272
16273 /* At this point add the self-STA */
16274
16275 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16276 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16277 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16278
16279#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16280#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16281
16282 //all DPU indices are the same for self STA
16283 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16284 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16285 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016289
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292 else
16293 {
16294 //Delete the station in the table
16295 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16296 }
16297
16298 /*Notify UMAC*/
16299 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16300
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302}/*WDI_ProcessDelSTARsp*/
16303
16304
16305/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016307==========================================================================*/
16308
16309/**
16310 @brief Process Set BSS Key Rsp function (called when a response
16311 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016312
16313 @param pWDICtx: pointer to the WLAN DAL context
16314 pEventData: pointer to the event information structure
16315
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 @see
16317 @return Result of the function call
16318*/
16319WDI_Status
16320WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016321(
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 WDI_ControlBlockType* pWDICtx,
16323 WDI_EventInfoType* pEventData
16324)
16325{
16326 WDI_Status wdiStatus;
16327 eHalStatus halStatus;
16328 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16330
16331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 -------------------------------------------------------------------------*/
16334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16335 ( NULL == pEventData->pEventData))
16336 {
16337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 }
16342
16343 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16344
16345 /*-------------------------------------------------------------------------
16346 Extract response and send it to UMAC
16347 -------------------------------------------------------------------------*/
16348 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016350
16351 if ( eHAL_STATUS_SUCCESS != halStatus )
16352 {
16353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16354 "Set BSS Key failed with status %s (%d)",
16355 WDI_getHALStatusMsgString(halStatus),
16356 halStatus);
16357 /* send the status to UMAC, don't return from here*/
16358 }
16359
16360 /*Notify UMAC*/
16361 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16362
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016364}/*WDI_ProcessSetBssKeyRsp*/
16365
16366/**
16367 @brief Process Remove BSS Key Rsp function (called when a response
16368 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016369
16370 @param pWDICtx: pointer to the WLAN DAL context
16371 pEventData: pointer to the event information structure
16372
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 @see
16374 @return Result of the function call
16375*/
16376WDI_Status
16377WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016378(
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 WDI_ControlBlockType* pWDICtx,
16380 WDI_EventInfoType* pEventData
16381)
16382{
16383 WDI_Status wdiStatus;
16384 eHalStatus halStatus;
16385 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16387
16388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 -------------------------------------------------------------------------*/
16391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16392 ( NULL == pEventData->pEventData))
16393 {
16394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 }
16399
16400 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16401
16402 /*-------------------------------------------------------------------------
16403 Extract response and send it to UMAC
16404 -------------------------------------------------------------------------*/
16405 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016407
16408 if ( eHAL_STATUS_SUCCESS != halStatus )
16409 {
16410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16411 "Remove BSS Key failed with status %s (%d )",
16412 WDI_getHALStatusMsgString(halStatus),
16413 halStatus);
16414 /* send the status to UMAC, don't return from here*/
16415 }
16416
16417 /*Notify UMAC*/
16418 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16419
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421}/*WDI_ProcessSetBssKeyRsp*/
16422
16423
16424/**
16425 @brief Process Set STA Key Rsp function (called when a response
16426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016427
16428 @param pWDICtx: pointer to the WLAN DAL context
16429 pEventData: pointer to the event information structure
16430
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 @see
16432 @return Result of the function call
16433*/
16434WDI_Status
16435WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016436(
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 WDI_ControlBlockType* pWDICtx,
16438 WDI_EventInfoType* pEventData
16439)
16440{
16441 WDI_Status wdiStatus;
16442 eHalStatus halStatus;
16443 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16445
16446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 -------------------------------------------------------------------------*/
16449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16450 ( NULL == pEventData->pEventData))
16451 {
16452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 }
16457
16458 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16459
16460 /*-------------------------------------------------------------------------
16461 Extract response and send it to UMAC
16462 -------------------------------------------------------------------------*/
16463 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016465
16466 if ( eHAL_STATUS_SUCCESS != halStatus )
16467 {
16468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16469 "Set STA Key failed with status %s (%d)",
16470 WDI_getHALStatusMsgString(halStatus),
16471 halStatus);
16472 /* send the status to UMAC, don't return from here*/
16473 }
16474
16475 /*Notify UMAC*/
16476 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479}/*WDI_ProcessSetSTAKeyRsp*/
16480
16481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016484
16485 @param pWDICtx: pointer to the WLAN DAL context
16486 pEventData: pointer to the event information structure
16487
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 @see
16489 @return Result of the function call
16490*/
16491WDI_Status
16492WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016493(
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 WDI_ControlBlockType* pWDICtx,
16495 WDI_EventInfoType* pEventData
16496)
16497{
16498 WDI_Status wdiStatus;
16499 eHalStatus halStatus;
16500 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
16520 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016522
16523 if ( eHAL_STATUS_SUCCESS != halStatus )
16524 {
16525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16526 "Remove STA Key failed with status %s (%d)",
16527 WDI_getHALStatusMsgString(halStatus),
16528 halStatus);
16529 /* send the status to UMAC, don't return from here*/
16530 }
16531
16532 /*Notify UMAC*/
16533 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16534
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016536}/*WDI_ProcessRemoveStaKeyRsp*/
16537
16538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016541
16542 @param pWDICtx: pointer to the WLAN DAL context
16543 pEventData: pointer to the event information structure
16544
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 @see
16546 @return Result of the function call
16547*/
16548WDI_Status
16549WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016550(
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 WDI_ControlBlockType* pWDICtx,
16552 WDI_EventInfoType* pEventData
16553)
16554{
16555 WDI_Status wdiStatus;
16556 eHalStatus halStatus;
16557 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16559
16560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 -------------------------------------------------------------------------*/
16563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16564 ( NULL == pEventData->pEventData))
16565 {
16566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 }
16571
16572 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16573
16574 /*-------------------------------------------------------------------------
16575 Extract response and send it to UMAC
16576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 wpalMemoryCopy( &halStatus,
16578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 sizeof(halStatus));
16580
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016582
16583 if ( eHAL_STATUS_SUCCESS != halStatus )
16584 {
16585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16586 "Set STA Key failed with status %s (%d)",
16587 WDI_getHALStatusMsgString(halStatus),
16588 halStatus);
16589 /* send the status to UMAC, don't return from here*/
16590 }
16591
16592 /*Notify UMAC*/
16593 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16594
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596}/*WDI_ProcessSetSTABcastKeyRsp*/
16597
16598/**
16599 @brief Process Remove STA Bcast Key Rsp function (called when a
16600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016601
16602 @param pWDICtx: pointer to the WLAN DAL context
16603 pEventData: pointer to the event information structure
16604
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 @see
16606 @return Result of the function call
16607*/
16608WDI_Status
16609WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016610(
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ControlBlockType* pWDICtx,
16612 WDI_EventInfoType* pEventData
16613)
16614{
16615 WDI_Status wdiStatus;
16616 eHalStatus halStatus;
16617 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16633
16634 /*-------------------------------------------------------------------------
16635 Extract response and send it to UMAC
16636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 wpalMemoryCopy( &halStatus,
16638 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 sizeof(halStatus));
16640
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016642
16643 if ( eHAL_STATUS_SUCCESS != halStatus )
16644 {
16645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16646 "Remove STA Key failed with status %s (%d)",
16647 WDI_getHALStatusMsgString(halStatus),
16648 halStatus);
16649 /* send the status to UMAC, don't return from here*/
16650 }
16651
16652 /*Notify UMAC*/
16653 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16654
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016656}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16657
16658
16659/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016661==========================================================================*/
16662
16663/**
16664 @brief Process Add TSpec Rsp function (called when a response
16665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_Status wdiStatus;
16681 eHalStatus halStatus;
16682 WDI_AddTsRspCb wdiAddTsRspCb;
16683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16684
16685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -------------------------------------------------------------------------*/
16688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16689 ( NULL == pEventData->pEventData))
16690 {
16691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16698
16699 /*-------------------------------------------------------------------------
16700 Extract response and send it to UMAC
16701 -------------------------------------------------------------------------*/
16702 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704
16705 /*Notify UMAC*/
16706 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16707
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709}/*WDI_ProcessAddTSpecRsp*/
16710
16711
16712/**
16713 @brief Process Del TSpec Rsp function (called when a response
16714 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016715
16716 @param pWDICtx: pointer to the WLAN DAL context
16717 pEventData: pointer to the event information structure
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 @see
16720 @return Result of the function call
16721*/
16722WDI_Status
16723WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016724(
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ControlBlockType* pWDICtx,
16726 WDI_EventInfoType* pEventData
16727)
16728{
16729 WDI_Status wdiStatus;
16730 eHalStatus halStatus;
16731 WDI_DelTsRspCb wdiDelTsRspCb;
16732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16747
16748 /*-------------------------------------------------------------------------
16749 Extract response and send it to UMAC
16750 -------------------------------------------------------------------------*/
16751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016753
16754 /*Notify UMAC*/
16755 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16756
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758}/*WDI_ProcessDelTSpecRsp*/
16759
16760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016763
16764 @param pWDICtx: pointer to the WLAN DAL context
16765 pEventData: pointer to the event information structure
16766
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 @see
16768 @return Result of the function call
16769*/
16770WDI_Status
16771WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016772(
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 WDI_ControlBlockType* pWDICtx,
16774 WDI_EventInfoType* pEventData
16775)
16776{
16777 WDI_Status wdiStatus;
16778 eHalStatus halStatus;
16779 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16781
16782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 -------------------------------------------------------------------------*/
16785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16786 ( NULL == pEventData->pEventData))
16787 {
16788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 }
16793
16794 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16795
16796 /*-------------------------------------------------------------------------
16797 Extract response and send it to UMAC
16798 -------------------------------------------------------------------------*/
16799 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016801
16802 /*Notify UMAC*/
16803 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16804
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016806}/*WDI_ProcessUpdateEDCAParamsRsp*/
16807
16808
16809/**
16810 @brief Process Add BA Rsp function (called when a response
16811 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016812
16813 @param pWDICtx: pointer to the WLAN DAL context
16814 pEventData: pointer to the event information structure
16815
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 @see
16817 @return Result of the function call
16818*/
16819WDI_Status
16820WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016821(
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 WDI_ControlBlockType* pWDICtx,
16823 WDI_EventInfoType* pEventData
16824)
16825{
16826 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16827
16828 tAddBASessionRspParams halBASessionRsp;
16829 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16830
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16833
16834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 -------------------------------------------------------------------------*/
16837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16838 ( NULL == pEventData->pEventData))
16839 {
16840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 }
16845
16846 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16847
16848 /*-------------------------------------------------------------------------
16849 Extract response and send it to UMAC
16850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 wpalMemoryCopy( &halBASessionRsp,
16852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 sizeof(halBASessionRsp));
16854
16855 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16856
Jeff Johnson43971f52012-07-17 12:26:56 -070016857 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 {
16859 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16860 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16861 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16862 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16863 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16864 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16865 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16866 }
16867
16868 /*Notify UMAC*/
16869 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16870
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016872}/*WDI_ProcessAddSessionBARsp*/
16873
16874
16875/**
16876 @brief Process Del BA Rsp function (called when a response
16877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016878
16879 @param pWDICtx: pointer to the WLAN DAL context
16880 pEventData: pointer to the event information structure
16881
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 @see
16883 @return Result of the function call
16884*/
16885WDI_Status
16886WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016887(
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 WDI_ControlBlockType* pWDICtx,
16889 WDI_EventInfoType* pEventData
16890)
16891{
16892 WDI_Status wdiStatus;
16893 eHalStatus halStatus;
16894 WDI_DelBARspCb wdiDelBARspCb;
16895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16896
16897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 -------------------------------------------------------------------------*/
16900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16901 ( NULL == pEventData->pEventData))
16902 {
16903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 }
16908
16909 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16910
16911 /*-------------------------------------------------------------------------
16912 Extract response and send it to UMAC
16913 -------------------------------------------------------------------------*/
16914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 if ( eHAL_STATUS_SUCCESS == halStatus )
16918 {
16919 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16920 }
16921
16922 /*Notify UMAC*/
16923 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926}/*WDI_ProcessDelBARsp*/
16927
16928#ifdef FEATURE_WLAN_CCX
16929/**
16930 @brief Process TSM Stats Rsp function (called when a response
16931 is being received over the bus from HAL)
16932
16933 @param pWDICtx: pointer to the WLAN DAL context
16934 pEventData: pointer to the event information structure
16935
16936 @see
16937 @return Result of the function call
16938*/
16939WDI_Status
16940WDI_ProcessTsmStatsRsp
16941(
16942 WDI_ControlBlockType* pWDICtx,
16943 WDI_EventInfoType* pEventData
16944)
16945{
16946 WDI_TsmRspCb wdiTsmStatsRspCb;
16947 tTsmStatsRspMsg halTsmStatsRspMsg;
16948 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16950
16951 /*-------------------------------------------------------------------------
16952 Sanity check
16953 -------------------------------------------------------------------------*/
16954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16955 ( NULL == pEventData->pEventData))
16956 {
16957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_ASSERT(0);
16960 return WDI_STATUS_E_FAILURE;
16961 }
16962
16963 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16964
16965 /*-------------------------------------------------------------------------
16966 Unpack HAL Response Message - the header was already extracted by the
16967 main Response Handling procedure
16968 -------------------------------------------------------------------------*/
16969 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16970 pEventData->pEventData,
16971 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16972
16973 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16974 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16975 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16976 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16977 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16978 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16979 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16980 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16981 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16982 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16983 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16984 halTsmStatsRspMsg.tsmStatsRspParams.status);
16985
16986 /*Notify UMAC*/
16987 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16988
16989 return WDI_STATUS_SUCCESS;
16990}/*WDI_ProcessTsmStatsRsp*/
16991
16992#endif
16993
16994
16995
16996/**
16997 @brief Process Flush AC Rsp function (called when a response
16998 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016999
17000 @param pWDICtx: pointer to the WLAN DAL context
17001 pEventData: pointer to the event information structure
17002
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 @see
17004 @return Result of the function call
17005*/
17006WDI_Status
17007WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017008(
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 WDI_ControlBlockType* pWDICtx,
17010 WDI_EventInfoType* pEventData
17011)
17012{
17013 WDI_Status wdiStatus;
17014 eHalStatus halStatus;
17015 WDI_FlushAcRspCb wdiFlushAcRspCb;
17016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17017
17018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 -------------------------------------------------------------------------*/
17021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17022 ( NULL == pEventData->pEventData))
17023 {
17024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 }
17029
17030 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17031
17032 /*-------------------------------------------------------------------------
17033 Extract response and send it to UMAC
17034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wpalMemoryCopy( &halStatus,
17036 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 sizeof(halStatus));
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Notify UMAC*/
17042 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17043
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017045}/*WDI_ProcessFlushAcRsp*/
17046
17047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017050
17051 @param pWDICtx: pointer to the WLAN DAL context
17052 pEventData: pointer to the event information structure
17053
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 @see
17055 @return Result of the function call
17056*/
17057WDI_Status
17058WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017059(
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 WDI_ControlBlockType* pWDICtx,
17061 WDI_EventInfoType* pEventData
17062)
17063{
17064 WDI_Status wdiStatus;
17065 eHalStatus halStatus;
17066 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17068
17069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -------------------------------------------------------------------------*/
17072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17073 ( NULL == pEventData->pEventData))
17074 {
17075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 }
17080
17081 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17082
17083 /*-------------------------------------------------------------------------
17084 Extract response and send it to UMAC
17085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 wpalMemoryCopy( &halStatus,
17087 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 sizeof(halStatus));
17089
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017091
17092 /*Notify UMAC*/
17093 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017096}/*WDI_ProcessBtAmpEventRsp*/
17097
17098
17099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017102
17103 @param pWDICtx: pointer to the WLAN DAL context
17104 pEventData: pointer to the event information structure
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 @see
17107 @return Result of the function call
17108*/
17109WDI_Status
17110WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017111(
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 WDI_ControlBlockType* pWDICtx,
17113 WDI_EventInfoType* pEventData
17114)
17115{
17116 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17117 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17118 tAddStaSelfRspMsg halAddStaSelfRsp;
17119 WDI_AddStaParams wdiAddSTAParam = {0};
17120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17121
17122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 -------------------------------------------------------------------------*/
17125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17126 ( NULL == pEventData->pEventData))
17127 {
17128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 }
17133
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17136
17137 /*-------------------------------------------------------------------------
17138 Extract response and send it to UMAC
17139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17141 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17143
17144
Jeff Johnsone7245742012-09-05 17:12:55 -070017145 wdiAddSTASelfParams.wdiStatus =
17146 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017147
Jeff Johnsone7245742012-09-05 17:12:55 -070017148 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17154
17155 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17156 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17157 WDI_MAC_ADDR_LEN);
17158
17159
17160#ifdef HAL_SELF_STA_PER_BSS
17161
17162 /* At this point add the self-STA */
17163
17164 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17165 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17166 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17167
17168 //all DPU indices are the same for self STA
17169
17170 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17173 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17174 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17175 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17176 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17177
17178 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17179 WDI_MAC_ADDR_LEN);
17180
17181 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17182 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17183
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17186 {
17187 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17188 }
17189#endif
17190
17191 /*Notify UMAC*/
17192 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessAddSTASelfRsp*/
17196
17197
17198
17199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017202
17203 @param pWDICtx: pointer to the WLAN DAL context
17204 pEventData: pointer to the event information structure
17205
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 @see
17207 @return Result of the function call
17208*/
17209WDI_Status
17210WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017211(
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 WDI_ControlBlockType* pWDICtx,
17213 WDI_EventInfoType* pEventData
17214)
17215{
17216 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17217 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17218 tDelStaSelfRspParams delStaSelfRspParams;
17219 wpt_uint8 ucStaIdx;
17220
17221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17222
17223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 -------------------------------------------------------------------------*/
17226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17227 ( NULL == pEventData->pEventData))
17228 {
17229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 }
17234
17235 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17236
17237 /*-------------------------------------------------------------------------
17238 Extract response and send it to UMAC
17239 -------------------------------------------------------------------------*/
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 (wpt_uint8*)pEventData->pEventData,
17243 sizeof(tDelStaSelfRspParams));
17244
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wdiDelStaSelfRspParams.wdiStatus =
17246 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017247
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17250 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17251 {
17252 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 delStaSelfRspParams.selfMacAddr,
17255 &ucStaIdx);
17256 if(WDI_STATUS_E_FAILURE == wdiStatus)
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017259 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 }
17263 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17264 }
17265
17266 /*Notify UMAC*/
17267 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17268
17269 return WDI_STATUS_SUCCESS;
17270}
17271
Jeff Johnsone7245742012-09-05 17:12:55 -070017272#ifdef FEATURE_OEM_DATA_SUPPORT
17273/**
17274 @brief Start Oem Data Rsp function (called when a
17275 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 @param pWDICtx: pointer to the WLAN DAL context
17278 pEventData: pointer to the event information structure
17279
17280 @see
17281 @return Result of the function call
17282*/
17283#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17284
17285WDI_Status
17286WDI_ProcessStartOemDataRsp
17287(
17288 WDI_ControlBlockType* pWDICtx,
17289 WDI_EventInfoType* pEventData
17290)
17291{
17292 WDI_oemDataRspCb wdiOemDataRspCb;
17293 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17294 tStartOemDataRspParams* halStartOemDataRspParams;
17295
17296 /*-------------------------------------------------------------------------
17297 Sanity check
17298 -------------------------------------------------------------------------*/
17299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17300 ( NULL == pEventData->pEventData))
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017303 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017304 WDI_ASSERT(0);
17305 return WDI_STATUS_E_FAILURE;
17306 }
17307
17308 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17309
17310 /*-------------------------------------------------------------------------
17311 Extract response and send it to UMAC
17312 -------------------------------------------------------------------------*/
17313 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17314
17315
17316 //It is the responsibility of the application code to check for failure
17317 //conditions!
17318
17319 //Allocate memory for WDI OEM DATA RSP structure
17320 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17321
17322 if(NULL == wdiOemDataRspParams)
17323 {
17324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017325 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 pWDICtx, pEventData, pEventData->pEventData);
17327 WDI_ASSERT(0);
17328 return WDI_STATUS_E_FAILURE;
17329 }
17330
17331 /* Populate WDI structure members */
17332 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17333
17334 /*Notify UMAC*/
17335 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17336
17337 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17338 wpalMemoryFree(wdiOemDataRspParams);
17339
17340 return WDI_STATUS_SUCCESS;
17341}/*WDI_PrcoessStartOemDataRsp*/
17342#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017346===========================================================================*/
17347
17348/**
17349 @brief Process Channel Switch Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17366 WDI_SwitchChRspCb wdiChSwitchRspCb;
17367 tSwitchChannelRspParams halSwitchChannelRsp;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 (wpt_uint8*)pEventData->pEventData,
17389 sizeof(halSwitchChannelRsp));
17390
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 wdiSwitchChRsp.wdiStatus =
17392 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17394
17395#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017397#endif
17398
17399 /*Notify UMAC*/
17400 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessChannelSwitchRsp*/
17404
17405
17406/**
17407 @brief Process Config STA Rsp function (called when a response
17408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017409
17410 @param pWDICtx: pointer to the WLAN DAL context
17411 pEventData: pointer to the event information structure
17412
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 @see
17414 @return Result of the function call
17415*/
17416WDI_Status
17417WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017418(
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 WDI_ControlBlockType* pWDICtx,
17420 WDI_EventInfoType* pEventData
17421)
17422{
17423 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17424 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17425 WDI_AddStaParams wdiAddSTAParam;
17426
17427 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17432
17433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 -------------------------------------------------------------------------*/
17436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17437 ( NULL == pEventData->pEventData))
17438 {
17439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 }
17444
17445 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17446
17447 /*-------------------------------------------------------------------------
17448 Extract response and send it to UMAC
17449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17451 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 sizeof(halConfigStaRsp.configStaRspParams));
17453
17454
17455 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17456 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17457 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17458 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17459 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17460
17461 /* MAC Address of STA - take from cache as it does not come back in the
17462 response*/
17463 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466
17467 wdiCfgSTAParams.wdiStatus =
17468 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017469
17470 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17471 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17472 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17473
17474 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17475 {
17476 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17477 {
17478 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17481 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017482
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 wdiAddSTAParam.ucHTCapable =
17487 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17488 wdiAddSTAParam.ucStaType =
17489 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017490 wdiAddSTAParam.ucRmfEnabled =
17491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017492
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017497
17498 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17499 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17500 WDI_MAC_ADDR_LEN);
17501
17502 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17503 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17504 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017505
17506 if ( NULL == pBSSSes )
17507 {
17508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17509 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 }
17514
17515 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17527 }
17528 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17529 {
17530 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 halConfigStaRsp.configStaRspParams.ucUcastSig;
17546 }
17547 }
17548
17549 /*Notify UMAC*/
17550 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17551
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553}/*WDI_ProcessConfigStaRsp*/
17554
17555
17556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017559
17560 @param pWDICtx: pointer to the WLAN DAL context
17561 pEventData: pointer to the event information structure
17562
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 @see
17564 @return Result of the function call
17565*/
17566WDI_Status
17567WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017568(
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 WDI_ControlBlockType* pWDICtx,
17570 WDI_EventInfoType* pEventData
17571)
17572{
17573 WDI_Status wdiStatus;
17574 eHalStatus halStatus;
17575 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17576
17577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17580
17581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 -------------------------------------------------------------------------*/
17584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17585 ( NULL == pEventData->pEventData))
17586 {
17587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 }
17592
17593 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17594
17595 wpalMutexAcquire(&pWDICtx->wptMutex);
17596
17597 /*If the link is being transitioned to idle - the BSS is to be deleted
17598 - this type of ending a session is possible when UMAC has failed an
17599 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017600 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17602 {
17603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17607 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17608 &pBSSSes);
17609
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 /*-----------------------------------------------------------------------
17611 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 -----------------------------------------------------------------------*/
17614 if ( NULL == pBSSSes )
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17617 "Set link response received outside association session");
17618 }
17619 else
17620 {
17621 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17622 will be del BSS coming after this to stop the beaconing & cleaning up the
17623 sessions*/
17624 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17625 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17626 {
17627 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -----------------------------------------------------------------------*/
17630 WDI_DeleteSession(pWDICtx, pBSSSes);
17631
17632 /*-----------------------------------------------------------------------
17633 Check to see if this association is in progress - if so disable the
17634 flag as this has ended
17635 -----------------------------------------------------------------------*/
17636 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 /*Association no longer in progress */
17639 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17640 /*Association no longer in progress - prepare pending assoc for processing*/
17641 WDI_DequeueAssocRequest(pWDICtx);
17642 }
17643 }
17644 }
17645 }
17646 /* If the link state has been set to POST ASSOC, reset the "association in
17647 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17650 {
17651 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17652 WDI_DequeueAssocRequest(pWDICtx);
17653 }
17654
17655 wpalMutexRelease(&pWDICtx->wptMutex);
17656
17657 /*-------------------------------------------------------------------------
17658 Extract response and send it to UMAC
17659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 wpalMemoryCopy( &halStatus,
17661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 sizeof(halStatus));
17663
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
17666 /*Notify UMAC*/
17667 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017670}/*WDI_ProcessSetLinkStateRsp*/
17671
17672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017675
17676 @param pWDICtx: pointer to the WLAN DAL context
17677 pEventData: pointer to the event information structure
17678
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 @see
17680 @return Result of the function call
17681*/
17682WDI_Status
17683WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017684(
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 WDI_ControlBlockType* pWDICtx,
17686 WDI_EventInfoType* pEventData
17687)
17688{
17689 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17690 WDI_GetStatsRspCb wdiGetStatsRspCb;
17691 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017692
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17694
17695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 -------------------------------------------------------------------------*/
17698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17699 ( NULL == pEventData->pEventData))
17700 {
17701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 }
17706
17707 /*-------------------------------------------------------------------------
17708 Extract response and send it to UMAC
17709 -------------------------------------------------------------------------*/
17710 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17711
17712 /*allocate the stats response buffer */
17713 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17714 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17715 + sizeof(WDI_GetStatsRspParamsType));
17716
17717 if(NULL == wdiGetStatsRsp)
17718 {
17719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017720 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 pWDICtx, pEventData, pEventData->pEventData);
17722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 }
17725
17726 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17727
17728 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17729 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17730 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17731 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17732 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17733 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17734
17735 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17736 wpalMemoryCopy(wdiGetStatsRsp + 1,
17737 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17738 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17739
17740 /*Notify UMAC*/
17741 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17742
17743 wpalMemoryFree(wdiGetStatsRsp);
17744
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017746}/*WDI_ProcessGetStatsRsp*/
17747
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017748#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17749/**
17750 @brief Process Get Roam Rssi Rsp function (called when a response is
17751 being received over the bus from HAL)
17752
17753 @param pWDICtx: pointer to the WLAN DAL context
17754 pEventData: pointer to the event information structure
17755
17756 @see
17757 @return Result of the function call
17758*/
17759WDI_Status
17760WDI_ProcessGetRoamRssiRsp
17761(
17762 WDI_ControlBlockType* pWDICtx,
17763 WDI_EventInfoType* pEventData
17764)
17765{
17766 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17767 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17768 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17770
17771 /*-------------------------------------------------------------------------
17772 Sanity check
17773 -------------------------------------------------------------------------*/
17774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17775 ( NULL == pEventData->pEventData))
17776 {
17777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17778 "%s: Invalid parameters", __func__);
17779 WDI_ASSERT(0);
17780 return WDI_STATUS_E_FAILURE;
17781 }
17782
17783 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17784 if(NULL == wdiGetRoamRssiRspCb)
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17787 "%s: call back function is NULL", __func__);
17788 WDI_ASSERT(0);
17789 return WDI_STATUS_E_FAILURE;
17790 }
17791
17792 /*-------------------------------------------------------------------------
17793 Extract response and send it to UMAC
17794 -------------------------------------------------------------------------*/
17795 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17796 pEventData->pEventData,
17797 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17798
17799 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17800 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17801 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17802
17803 /*Notify UMAC*/
17804 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17805
17806 return WDI_STATUS_SUCCESS;
17807}/*WDI_ProcessGetRoamRssiRsp*/
17808#endif
17809
Jeff Johnson295189b2012-06-20 16:38:30 -070017810
17811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017814
17815 @param pWDICtx: pointer to the WLAN DAL context
17816 pEventData: pointer to the event information structure
17817
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 @see
17819 @return Result of the function call
17820*/
17821WDI_Status
17822WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017823(
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 WDI_ControlBlockType* pWDICtx,
17825 WDI_EventInfoType* pEventData
17826)
17827{
17828 WDI_Status wdiStatus;
17829 eHalStatus halStatus;
17830 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17832
17833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 -------------------------------------------------------------------------*/
17836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17837 ( NULL == pEventData->pEventData))
17838 {
17839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 }
17844
17845 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17846
17847 /*-------------------------------------------------------------------------
17848 Extract response and send it to UMAC
17849 -------------------------------------------------------------------------*/
17850 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852
17853 /*Notify UMAC*/
17854 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17855
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857}/*WDI_ProcessUpdateCfgRsp*/
17858
17859
17860
17861/**
17862 @brief Process Add BA Rsp function (called when a response
17863 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017864
17865 @param pWDICtx: pointer to the WLAN DAL context
17866 pEventData: pointer to the event information structure
17867
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 @see
17869 @return Result of the function call
17870*/
17871WDI_Status
17872WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017873(
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 WDI_ControlBlockType* pWDICtx,
17875 WDI_EventInfoType* pEventData
17876)
17877{
17878 WDI_AddBARspCb wdiAddBARspCb;
17879
17880 tAddBARspParams halAddBARsp;
17881 WDI_AddBARspinfoType wdiAddBARsp;
17882
17883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17884
17885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 -------------------------------------------------------------------------*/
17888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17889 ( NULL == pEventData->pEventData))
17890 {
17891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 }
17896
17897 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17898
17899 /*-------------------------------------------------------------------------
17900 Extract response and send it to UMAC
17901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 wpalMemoryCopy( &halAddBARsp,
17903 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 sizeof(halAddBARsp));
17905
17906 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17907
Jeff Johnson43971f52012-07-17 12:26:56 -070017908 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 {
17910 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17911 }
17912
17913 /*Notify UMAC*/
17914 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917}/*WDI_ProcessAddSessionBARsp*/
17918
17919/**
17920 @brief Process Add BA Rsp function (called when a response
17921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017922
17923 @param pWDICtx: pointer to the WLAN DAL context
17924 pEventData: pointer to the event information structure
17925
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 @see
17927 @return Result of the function call
17928*/
17929WDI_Status
17930WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017931(
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 WDI_ControlBlockType* pWDICtx,
17933 WDI_EventInfoType* pEventData
17934)
17935{
17936 WDI_TriggerBARspCb wdiTriggerBARspCb;
17937
17938 tTriggerBARspParams* halTriggerBARsp;
17939 tTriggerBaRspCandidate* halBaCandidate;
17940 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17941 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17942 wpt_uint16 index;
17943 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017944 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17946
17947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 -------------------------------------------------------------------------*/
17950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17951 ( NULL == pEventData->pEventData))
17952 {
17953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 }
17958
17959 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17960
17961 /*-------------------------------------------------------------------------
17962 Extract response and send it to UMAC
17963 -------------------------------------------------------------------------*/
17964 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17965
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017966 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17967
17968 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17969 {
17970 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017974 if(NULL == wdiTriggerBARsp)
17975 {
17976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017977 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017978 pWDICtx, pEventData, pEventData->pEventData);
17979 WDI_ASSERT(0);
17980 return WDI_STATUS_E_FAILURE;
17981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017983 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17984
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17988
17989 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17990 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17991
17992 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017994 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17996 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18002 }
18003 wdiTriggerBARspCandidate++;
18004 halBaCandidate++;
18005 }
18006 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018007 else
18008 {
18009 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18010
18011 if(NULL == wdiTriggerBARsp)
18012 {
18013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018014 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018015 pWDICtx, pEventData, pEventData->pEventData);
18016 WDI_ASSERT(0);
18017 return WDI_STATUS_E_FAILURE;
18018 }
18019
18020 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18021
18022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018023
18024 /*Notify UMAC*/
18025 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18026
18027 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029}/*WDI_ProcessAddSessionBARsp*/
18030
18031/**
18032 @brief Process Update Beacon Params Rsp function (called when a response
18033 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_ProcessUpdateBeaconParamsRsp
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_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
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 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 wpalMemoryCopy( &halStatus,
18071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 sizeof(halStatus));
18073
Jeff Johnsone7245742012-09-05 17:12:55 -070018074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018075
18076 /*Notify UMAC*/
18077 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18078
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018080}/*WDI_ProcessUpdateBeaconParamsRsp*/
18081
18082/**
18083 @brief Process Send Beacon template Rsp function (called when a response
18084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018085
18086 @param pWDICtx: pointer to the WLAN DAL context
18087 pEventData: pointer to the event information structure
18088
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 @see
18090 @return Result of the function call
18091*/
18092WDI_Status
18093WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018094(
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ControlBlockType* pWDICtx,
18096 WDI_EventInfoType* pEventData
18097)
18098{
18099 WDI_Status wdiStatus;
18100 eHalStatus halStatus;
18101 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18103
18104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 -------------------------------------------------------------------------*/
18107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18108 ( NULL == pEventData->pEventData))
18109 {
18110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 }
18115
18116 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18117
18118 /*-------------------------------------------------------------------------
18119 Extract response and send it to UMAC
18120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 wpalMemoryCopy( &halStatus,
18122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 sizeof(halStatus));
18124
Jeff Johnsone7245742012-09-05 17:12:55 -070018125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018126
18127 /*Notify UMAC*/
18128 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18129
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018131}/*WDI_ProcessSendBeaconParamsRsp*/
18132
Jeff Johnsone7245742012-09-05 17:12:55 -070018133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_Status wdiStatus;
18152 eHalStatus halStatus;
18153 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18155
18156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 -------------------------------------------------------------------------*/
18159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18160 ( NULL == pEventData->pEventData))
18161 {
18162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 }
18167
18168 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18169
18170 /*-------------------------------------------------------------------------
18171 Extract response and send it to UMAC
18172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wpalMemoryCopy( &halStatus,
18174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 sizeof(halStatus));
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18184
18185 /**
18186 @brief Process Set Max Tx Power Rsp function (called when a response
18187 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018188
18189 @param pWDICtx: pointer to the WLAN DAL context
18190 pEventData: pointer to the event information structure
18191
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 @see
18193 @return Result of the function call
18194*/
18195WDI_Status
18196WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018197(
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 WDI_ControlBlockType* pWDICtx,
18199 WDI_EventInfoType* pEventData
18200)
18201{
18202 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018203
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018205
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
18221 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18222
18223 /*-------------------------------------------------------------------------
18224 Extract response and send it to UMAC
18225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18227 pEventData->pEventData,
18228 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018229
18230 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18231 {
18232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18233 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 }
18236
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018240
18241 /*Notify UMAC*/
18242 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18243
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018245}
18246
schangd82195a2013-03-13 18:41:24 -070018247 /**
18248 @brief Process Set Tx Power Rsp function (called when a response
18249 is being received over the bus from HAL)
18250
18251 @param pWDICtx: pointer to the WLAN DAL context
18252 pEventData: pointer to the event information structure
18253
18254 @see
18255 @return Result of the function call
18256*/
18257WDI_Status
18258WDI_ProcessSetTxPowerRsp
18259(
18260 WDI_ControlBlockType* pWDICtx,
18261 WDI_EventInfoType* pEventData
18262)
18263{
18264 tSetTxPwrRspMsg halTxpowerrsp;
18265 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18266 WDA_SetTxPowerRspCb wdiReqStatusCb;
18267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18268
18269 /*-------------------------------------------------------------------------
18270 Sanity check
18271 -------------------------------------------------------------------------*/
18272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18273 ( NULL == pEventData->pEventData))
18274 {
18275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18276 "%s: Invalid parameters", __func__);
18277 WDI_ASSERT(0);
18278 return WDI_STATUS_E_FAILURE;
18279 }
18280
18281 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18282
18283 /*-------------------------------------------------------------------------
18284 Extract response and send it to UMAC
18285 -------------------------------------------------------------------------*/
18286 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18287 pEventData->pEventData,
18288 sizeof(halTxpowerrsp.setTxPwrRspParams));
18289
18290 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18291 {
18292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18293 "Error status returned in Set Tx Power Response ");
18294 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18295 return WDI_STATUS_E_FAILURE;
18296 }
18297
18298 wdiSetTxPowerRspMsg.wdiStatus =
18299 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18300
18301 /*Notify UMAC*/
18302 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18303
18304 return WDI_STATUS_SUCCESS;
18305}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018306#ifdef FEATURE_WLAN_TDLS
18307/**
18308 @brief Process TDLS Link Establish Rsp function (called
18309 when a response is being received over the bus from HAL)
18310
18311 @param pWDICtx: pointer to the WLAN DAL context
18312 pEventData: pointer to the event information structure
18313
18314 @see
18315 @return Result of the function call
18316*/
18317WDI_Status
18318WDI_ProcessLinkEstablishReqRsp
18319(
18320 WDI_ControlBlockType* pWDICtx,
18321 WDI_EventInfoType* pEventData
18322)
18323{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018324 eHalStatus halStatus;
18325 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018326 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18327 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18328
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18330
18331 /*-------------------------------------------------------------------------
18332 Sanity check
18333 -------------------------------------------------------------------------*/
18334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18335 ( NULL == pEventData->pEventData))
18336 {
18337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18338 "%s: Invalid parameters", __func__);
18339 WDI_ASSERT(0);
18340 return WDI_STATUS_E_FAILURE;
18341 }
18342
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018343 /*-------------------------------------------------------------------------
18344 Extract indication and send it to UMAC
18345 -------------------------------------------------------------------------*/
18346 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18347 pEventData->pEventData,
18348 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18349
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018350 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18351
18352 /*-------------------------------------------------------------------------
18353 Extract response and send it to UMAC
18354 -------------------------------------------------------------------------*/
18355 wpalMemoryCopy( &halStatus,
18356 pEventData->pEventData,
18357 sizeof(halStatus));
18358
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018359 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18360 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018361
18362 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018363 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018364
18365 return WDI_STATUS_SUCCESS;
18366}/*WDI_ProcessLinkEstablishReqRsp*/
18367#endif
schangd82195a2013-03-13 18:41:24 -070018368
Jeff Johnson295189b2012-06-20 16:38:30 -070018369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018372
18373 @param pWDICtx: pointer to the WLAN DAL context
18374 pEventData: pointer to the event information structure
18375
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 @see
18377 @return Result of the function call
18378*/
18379WDI_Status
18380WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018381(
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 WDI_ControlBlockType* pWDICtx,
18383 WDI_EventInfoType* pEventData
18384)
18385{
18386 WDI_Status wdiStatus;
18387 eHalStatus halStatus;
18388 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18390
18391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 -------------------------------------------------------------------------*/
18394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18395 ( NULL == pEventData->pEventData))
18396 {
18397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 }
18402
18403 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18404
18405 /*-------------------------------------------------------------------------
18406 Extract response and send it to UMAC
18407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wpalMemoryCopy( &halStatus,
18409 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 sizeof(halStatus));
18411
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018413
18414 /*Notify UMAC*/
18415 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18416
Jeff Johnsone7245742012-09-05 17:12:55 -070018417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018418}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018422
18423 @param pWDICtx: pointer to the WLAN DAL context
18424 pEventData: pointer to the event information structure
18425
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 @see
18427 @return Result of the function call
18428*/
18429WDI_Status
18430WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018431(
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 WDI_ControlBlockType* pWDICtx,
18433 WDI_EventInfoType* pEventData
18434)
18435{
18436 WDI_Status wdiStatus;
18437 eHalStatus halStatus;
18438 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018439 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18441
18442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 -------------------------------------------------------------------------*/
18445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18446 ( NULL == pEventData->pEventData))
18447 {
18448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 }
18453
18454 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18455
18456 /*-------------------------------------------------------------------------
18457 Extract response and send it to UMAC
18458 -------------------------------------------------------------------------*/
18459 halStatus = *((eHalStatus*)pEventData->pEventData);
18460
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018463 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18464 * Other module states are taken care by PMC.
18465 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18466 */
18467 if (wdiStatus != WDI_STATUS_SUCCESS) {
18468
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18470 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18471 halStatus);
18472 /* Call Back is not required as we are putting the DXE in FULL
18473 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018474 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18475
18476 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018478 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018479 WDI_ASSERT(0);
18480 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018481 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 /*Notify UMAC*/
18483 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18484
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018486}/*WDI_ProcessEnterImpsRsp*/
18487
18488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018491
18492 @param pWDICtx: pointer to the WLAN DAL context
18493 pEventData: pointer to the event information structure
18494
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 @see
18496 @return Result of the function call
18497*/
18498WDI_Status
18499WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018500(
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 WDI_ControlBlockType* pWDICtx,
18502 WDI_EventInfoType* pEventData
18503)
18504{
18505 WDI_Status wdiStatus;
18506 eHalStatus halStatus;
18507 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018508 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18510
18511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 -------------------------------------------------------------------------*/
18514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18515 ( NULL == pEventData->pEventData))
18516 {
18517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 }
18522
18523 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18524
18525 /*-------------------------------------------------------------------------
18526 Extract response and send it to UMAC
18527 -------------------------------------------------------------------------*/
18528 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018530
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018531 if (halStatus != eHAL_STATUS_SUCCESS)
18532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18533 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18534
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018536 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18537 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18538 {
18539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018540 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018541 WDI_ASSERT(0);
18542 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 /*Notify UMAC*/
18544 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18545
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018547}/*WDI_ProcessExitImpsRsp*/
18548
18549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018552
18553 @param pWDICtx: pointer to the WLAN DAL context
18554 pEventData: pointer to the event information structure
18555
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 @see
18557 @return Result of the function call
18558*/
18559WDI_Status
18560WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018561(
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 WDI_ControlBlockType* pWDICtx,
18563 WDI_EventInfoType* pEventData
18564)
18565{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018566 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18567 tHalEnterBmpsRspParams halEnterBmpsRsp;
18568 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18569 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018570 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18572
18573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 -------------------------------------------------------------------------*/
18576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18577 ( NULL == pEventData->pEventData))
18578 {
18579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 }
18584
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018586 Extract response and send it to UMAC
18587 -------------------------------------------------------------------------*/
18588 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18589 {
18590 wpalMemoryCopy( &halEnterBmpsRsp,
18591 pEventData->pEventData,
18592 sizeof(halEnterBmpsRsp));
18593
18594 //Used to print debug message
18595 halStatus = halEnterBmpsRsp.status;
18596 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18597 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18598 }
18599 else
18600 {
18601 halStatus = *((eHalStatus*)pEventData->pEventData);
18602 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18603 }
18604
18605 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018606
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018607 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18608 * Other module states are taken care by PMC.
18609 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18610 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018611 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18612 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018613
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018615 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18616 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018617 /* Call Back is not required as we are putting the DXE in FULL
18618 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018619 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18620 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18621 {
18622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018623 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018624 WDI_ASSERT(0);
18625 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018626 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018627 }
18628
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018630 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018631
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018633}/*WDI_ProcessEnterBmpsRsp*/
18634
18635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018638
18639 @param pWDICtx: pointer to the WLAN DAL context
18640 pEventData: pointer to the event information structure
18641
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 @see
18643 @return Result of the function call
18644*/
18645WDI_Status
18646WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018647(
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 WDI_ControlBlockType* pWDICtx,
18649 WDI_EventInfoType* pEventData
18650)
18651{
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 eHalStatus halStatus;
18653 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018654 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018655 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18656 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18658
18659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 -------------------------------------------------------------------------*/
18662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18663 ( NULL == pEventData->pEventData))
18664 {
18665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 }
18670
18671 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18672
18673 /*-------------------------------------------------------------------------
18674 Extract response and send it to UMAC
18675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018676
18677 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18678 {
18679 wpalMemoryCopy( &halExitBmpsRsp,
18680 pEventData->pEventData,
18681 sizeof(halExitBmpsRsp));
18682
18683 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18684 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18685 }
18686 else
18687 {
18688 halStatus = *((eHalStatus*)pEventData->pEventData);
18689 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018691
18692 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018693 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18694 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18695 {
18696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018697 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018698 WDI_ASSERT(0);
18699 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18701
18702 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018703 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018704
Jeff Johnsone7245742012-09-05 17:12:55 -070018705 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018706}/*WDI_ProcessExitBmpsRsp*/
18707
18708/**
18709 @brief Process Enter UAPSD Rsp function (called when a response
18710 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018711
18712 @param pWDICtx: pointer to the WLAN DAL context
18713 pEventData: pointer to the event information structure
18714
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 @see
18716 @return Result of the function call
18717*/
18718WDI_Status
18719WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018720(
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 WDI_ControlBlockType* pWDICtx,
18722 WDI_EventInfoType* pEventData
18723)
18724{
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018726 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018728 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18729
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18731
18732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 -------------------------------------------------------------------------*/
18735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18736 ( NULL == pEventData->pEventData))
18737 {
18738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 }
18743
18744 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18745
18746 /*-------------------------------------------------------------------------
18747 Extract response and send it to UMAC
18748 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018749 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18750 {
18751 wpalMemoryCopy( &halEnterUapsdRsp,
18752 pEventData->pEventData,
18753 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018754
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018755 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18756 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18757 }
18758 else
18759 {
18760 halStatus = *((eHalStatus*)pEventData->pEventData);
18761 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18762 }
18763
18764 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 {
18766 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18767 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18768 // the traffic to decide when to suspend the trigger frames when there is no traffic
18769 // activity on the trigger enabled ACs
18770 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18771
18772#ifdef WLAN_PERF
18773 // Increment the BD signature to refresh the fast path BD utilization
18774 pWDICtx->uBdSigSerialNum++;
18775#endif
18776 }
18777
18778 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018779 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780
Jeff Johnsone7245742012-09-05 17:12:55 -070018781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018782}/*WDI_ProcessEnterUapsdRsp*/
18783
18784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018787
18788 @param pWDICtx: pointer to the WLAN DAL context
18789 pEventData: pointer to the event information structure
18790
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 @see
18792 @return Result of the function call
18793*/
18794WDI_Status
18795WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018796(
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 WDI_ControlBlockType* pWDICtx,
18798 WDI_EventInfoType* pEventData
18799)
18800{
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 eHalStatus halStatus;
18802 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018803 tHalExitUapsdRspParams halExitUapsdRsp;
18804 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18806
18807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 -------------------------------------------------------------------------*/
18810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18811 ( NULL == pEventData->pEventData))
18812 {
18813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 }
18818
18819 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18820
18821 /*-------------------------------------------------------------------------
18822 Extract response and send it to UMAC
18823 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018824 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18825 {
18826 wpalMemoryCopy( &halExitUapsdRsp,
18827 pEventData->pEventData,
18828 sizeof(halExitUapsdRsp));
18829
18830 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18831 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18832 }
18833 else
18834 {
18835 halStatus = *((eHalStatus*)pEventData->pEventData);
18836 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18837 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018838 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18839 // directly instead of the FW WQ.
18840 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18841
18842#ifdef WLAN_PERF
18843 // Increment the BD signature to refresh the fast path BD utilization
18844 pWDICtx->uBdSigSerialNum++;
18845#endif
18846
18847 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018848 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018849
Jeff Johnsone7245742012-09-05 17:12:55 -070018850 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018851}/*WDI_ProcessExitUapsdRsp*/
18852
18853/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018856
18857 @param pWDICtx: pointer to the WLAN DAL context
18858 pEventData: pointer to the event information structure
18859
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 @see
18861 @return Result of the function call
18862*/
18863WDI_Status
18864WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018865(
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ControlBlockType* pWDICtx,
18867 WDI_EventInfoType* pEventData
18868)
18869{
18870 WDI_Status wdiStatus;
18871 eHalStatus halStatus;
18872 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18874
18875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 -------------------------------------------------------------------------*/
18878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18879 ( NULL == pEventData->pEventData))
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 }
18886
18887 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18888
18889 /*-------------------------------------------------------------------------
18890 Extract response and send it to UMAC
18891 -------------------------------------------------------------------------*/
18892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018894
18895 /*Notify UMAC*/
18896 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18897
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018899}/*WDI_ProcessSetUapsdAcParamsRsp*/
18900
18901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018902 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018904
18905 @param pWDICtx: pointer to the WLAN DAL context
18906 pEventData: pointer to the event information structure
18907
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 @see
18909 @return Result of the function call
18910*/
18911WDI_Status
18912WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018913(
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 WDI_ControlBlockType* pWDICtx,
18915 WDI_EventInfoType* pEventData
18916)
18917{
18918 WDI_Status wdiStatus;
18919 eHalStatus halStatus;
18920 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18922
18923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 -------------------------------------------------------------------------*/
18926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18927 ( NULL == pEventData->pEventData))
18928 {
18929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 }
18934
18935 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18936
18937 /*-------------------------------------------------------------------------
18938 Extract response and send it to UMAC
18939 -------------------------------------------------------------------------*/
18940 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018942
18943 /*Notify UMAC*/
18944 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18945
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018947}/*WDI_ProcessUpdateUapsdParamsRsp*/
18948
18949/**
18950 @brief Process Configure RXP filter Rsp function (called when a
18951 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018952
18953 @param pWDICtx: pointer to the WLAN DAL context
18954 pEventData: pointer to the event information structure
18955
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 @see
18957 @return Result of the function call
18958*/
18959WDI_Status
18960WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018961(
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 WDI_ControlBlockType* pWDICtx,
18963 WDI_EventInfoType* pEventData
18964)
18965{
18966 WDI_Status wdiStatus;
18967 eHalStatus halStatus;
18968 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18970
18971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 -------------------------------------------------------------------------*/
18974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18975 ( NULL == pEventData->pEventData))
18976 {
18977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 }
18982
18983 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18984
18985 /*-------------------------------------------------------------------------
18986 Extract response and send it to UMAC
18987 -------------------------------------------------------------------------*/
18988 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018990
18991 /*Notify UMAC*/
18992 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995}/*WDI_ProcessConfigureRxpFilterRsp*/
18996
18997/**
18998 @brief Process Set beacon filter Rsp function (called when a
18999 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019000
19001 @param pWDICtx: pointer to the WLAN DAL context
19002 pEventData: pointer to the event information structure
19003
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 @see
19005 @return Result of the function call
19006*/
19007WDI_Status
19008WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019009(
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 WDI_ControlBlockType* pWDICtx,
19011 WDI_EventInfoType* pEventData
19012)
19013{
19014 WDI_Status wdiStatus;
19015 eHalStatus halStatus;
19016 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19018
19019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 -------------------------------------------------------------------------*/
19022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19023 ( NULL == pEventData->pEventData))
19024 {
19025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 }
19030
19031 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19032
19033 /*-------------------------------------------------------------------------
19034 Extract response and send it to UMAC
19035 -------------------------------------------------------------------------*/
19036 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038
19039 /*Notify UMAC*/
19040 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19041
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019043}/*WDI_ProcessSetBeaconFilterRsp*/
19044
19045/**
19046 @brief Process remove beacon filter Rsp function (called when a
19047 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019048
19049 @param pWDICtx: pointer to the WLAN DAL context
19050 pEventData: pointer to the event information structure
19051
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 @see
19053 @return Result of the function call
19054*/
19055WDI_Status
19056WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019057(
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 WDI_ControlBlockType* pWDICtx,
19059 WDI_EventInfoType* pEventData
19060)
19061{
19062 WDI_Status wdiStatus;
19063 eHalStatus halStatus;
19064 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19066
19067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 -------------------------------------------------------------------------*/
19070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19071 ( NULL == pEventData->pEventData))
19072 {
19073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 }
19078
19079 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19080
19081 /*-------------------------------------------------------------------------
19082 Extract response and send it to UMAC
19083 -------------------------------------------------------------------------*/
19084 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019086
19087 /*Notify UMAC*/
19088 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19089
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019091}/*WDI_ProcessRemBeaconFilterRsp*/
19092
19093/**
19094 @brief Process set RSSI thresholds Rsp function (called when a
19095 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019096
19097 @param pWDICtx: pointer to the WLAN DAL context
19098 pEventData: pointer to the event information structure
19099
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 @see
19101 @return Result of the function call
19102*/
19103WDI_Status
19104WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019105(
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 WDI_ControlBlockType* pWDICtx,
19107 WDI_EventInfoType* pEventData
19108)
19109{
19110 WDI_Status wdiStatus;
19111 eHalStatus halStatus;
19112 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19114
19115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 -------------------------------------------------------------------------*/
19118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19119 ( NULL == pEventData->pEventData))
19120 {
19121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 }
19126
19127 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19128
19129 /*-------------------------------------------------------------------------
19130 Extract response and send it to UMAC
19131 -------------------------------------------------------------------------*/
19132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019134
19135 /*Notify UMAC*/
19136 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19137
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019139}/*WDI_ProcessSetRSSIThresoldsRsp*/
19140
19141/**
19142 @brief Process host offload Rsp function (called when a
19143 response is being received over the 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_ProcessHostOffloadRsp
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_HostOffloadCb wdiHostOffloadCb;
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 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19176
19177 /*-------------------------------------------------------------------------
19178 Extract response and send it to UMAC
19179 -------------------------------------------------------------------------*/
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 /*Notify UMAC*/
19184 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19185
Jeff Johnsone7245742012-09-05 17:12:55 -070019186 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019187}/*WDI_ProcessHostOffloadRsp*/
19188
19189/**
19190 @brief Process keep alive Rsp function (called when a
19191 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019192
19193 @param pWDICtx: pointer to the WLAN DAL context
19194 pEventData: pointer to the event information structure
19195
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 @see
19197 @return Result of the function call
19198*/
19199WDI_Status
19200WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019201(
Jeff Johnson295189b2012-06-20 16:38:30 -070019202 WDI_ControlBlockType* pWDICtx,
19203 WDI_EventInfoType* pEventData
19204)
19205{
19206 WDI_Status wdiStatus;
19207 eHalStatus halStatus;
19208 WDI_KeepAliveCb wdiKeepAliveCb;
19209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19211 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19212
19213
19214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 -------------------------------------------------------------------------*/
19217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19218 ( NULL == pEventData->pEventData))
19219 {
19220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 }
19225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19227
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 /*-------------------------------------------------------------------------
19229 Extract response and send it to UMAC
19230 -------------------------------------------------------------------------*/
19231 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019233
19234 /*Notify UMAC*/
19235 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19236
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019238}/*WDI_ProcessKeepAliveRsp*/
19239
19240/**
19241 @brief Process wowl add ptrn Rsp function (called when a
19242 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019243
19244 @param pWDICtx: pointer to the WLAN DAL context
19245 pEventData: pointer to the event information structure
19246
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 @see
19248 @return Result of the function call
19249*/
19250WDI_Status
19251WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019252(
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 WDI_ControlBlockType* pWDICtx,
19254 WDI_EventInfoType* pEventData
19255)
19256{
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 eHalStatus halStatus;
19258 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019259 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19260 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19261
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19263
19264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 -------------------------------------------------------------------------*/
19267 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19268 ( NULL == pEventData->pEventData))
19269 {
19270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 }
19275
19276 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19277
19278 /*-------------------------------------------------------------------------
19279 Extract response and send it to UMAC
19280 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019281 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19282 {
19283 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19284 pEventData->pEventData,
19285 sizeof(halAddWowlBcastPtrRsp));
19286
19287 wdiWowlAddBcPtrRsp.wdiStatus =
19288 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19289 }
19290 else
19291 {
19292 halStatus = *((eHalStatus*)pEventData->pEventData);
19293 wdiWowlAddBcPtrRsp.wdiStatus =
19294 WDI_HAL_2_WDI_STATUS(halStatus);
19295 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019296
19297 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019298 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019299
Jeff Johnsone7245742012-09-05 17:12:55 -070019300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019301}/*WDI_ProcessWowlAddBcPtrnRsp*/
19302
19303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019306
19307 @param pWDICtx: pointer to the WLAN DAL context
19308 pEventData: pointer to the event information structure
19309
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 @see
19311 @return Result of the function call
19312*/
19313WDI_Status
19314WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019315(
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ControlBlockType* pWDICtx,
19317 WDI_EventInfoType* pEventData
19318)
19319{
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 eHalStatus halStatus;
19321 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019322 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19323 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19325
19326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 -------------------------------------------------------------------------*/
19329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19330 ( NULL == pEventData->pEventData))
19331 {
19332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 }
19337
19338 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19339
19340 /*-------------------------------------------------------------------------
19341 Extract response and send it to UMAC
19342 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019343 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19344 {
19345 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19346 pEventData->pEventData,
19347 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019349 wdiWowlDelBcstPtrRsp.wdiStatus =
19350 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19351 }
19352 else
19353 {
19354 halStatus = *((eHalStatus*)pEventData->pEventData);
19355 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19356 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019358 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019359
Jeff Johnsone7245742012-09-05 17:12:55 -070019360 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019361}/*WDI_ProcessWowlDelBcPtrnRsp*/
19362
19363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019366
19367 @param pWDICtx: pointer to the WLAN DAL context
19368 pEventData: pointer to the event information structure
19369
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 @see
19371 @return Result of the function call
19372*/
19373WDI_Status
19374WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019375(
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 WDI_ControlBlockType* pWDICtx,
19377 WDI_EventInfoType* pEventData
19378)
19379{
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 eHalStatus halStatus;
19381 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019382 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19383 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19385
19386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 -------------------------------------------------------------------------*/
19389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19390 ( NULL == pEventData->pEventData))
19391 {
19392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 }
19397
19398 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19399
19400 /*-------------------------------------------------------------------------
19401 Extract response and send it to UMAC
19402 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019403 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19404 {
19405 wpalMemoryCopy( &halEnterWowlRspParams,
19406 (wpt_uint8*)pEventData->pEventData,
19407 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019409 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19410 wdiwowlEnterRsp.status =
19411 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19412 }
19413 else
19414 {
19415 halStatus = *((eHalStatus*)pEventData->pEventData);
19416 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019419 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019420
Jeff Johnsone7245742012-09-05 17:12:55 -070019421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019422}/*WDI_ProcessWowlEnterRsp*/
19423
19424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019427
19428 @param pWDICtx: pointer to the WLAN DAL context
19429 pEventData: pointer to the event information structure
19430
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 @see
19432 @return Result of the function call
19433*/
19434WDI_Status
19435WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019436(
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 WDI_ControlBlockType* pWDICtx,
19438 WDI_EventInfoType* pEventData
19439)
19440{
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 eHalStatus halStatus;
19442 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019443 tHalExitWowlRspParams halExitWowlRspParams;
19444 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19445
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19447
19448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 -------------------------------------------------------------------------*/
19451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19452 ( NULL == pEventData->pEventData))
19453 {
19454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 }
19459
19460 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19461
19462 /*-------------------------------------------------------------------------
19463 Extract response and send it to UMAC
19464 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019465 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19466 {
19467 wpalMemoryCopy( &halExitWowlRspParams,
19468 pEventData->pEventData,
19469 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019471 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19472 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19473
19474 }
19475 else
19476 {
19477 halStatus = *((eHalStatus*)pEventData->pEventData);
19478 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19479 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019481 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019482
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019484}/*WDI_ProcessWowlExitRsp*/
19485
19486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 (called when a response is being received over the bus
19489 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019490
19491 @param pWDICtx: pointer to the WLAN DAL context
19492 pEventData: pointer to the event information structure
19493
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 @see
19495 @return Result of the function call
19496*/
19497WDI_Status
19498WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019499(
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 WDI_ControlBlockType* pWDICtx,
19501 WDI_EventInfoType* pEventData
19502)
19503{
19504 WDI_Status wdiStatus;
19505 eHalStatus halStatus;
19506 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19508
19509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 -------------------------------------------------------------------------*/
19512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19513 ( NULL == pEventData->pEventData))
19514 {
19515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 }
19520
19521 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19522
19523 /*-------------------------------------------------------------------------
19524 Extract response and send it to UMAC
19525 -------------------------------------------------------------------------*/
19526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019528
19529 /*Notify UMAC*/
19530 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19531
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19534
19535
19536/**
19537 @brief Process Nv download(called when a response
19538 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019539
19540 @param pWDICtx: pointer to the WLAN DAL context
19541 pEventData: pointer to the event information structure
19542
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 @see
19544 @return Result of the function call
19545*/
19546WDI_Status
19547WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019548(
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 WDI_ControlBlockType* pWDICtx,
19550 WDI_EventInfoType* pEventData
19551)
19552{
19553
19554 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19555 tHalNvImgDownloadRspParams halNvDownloadRsp;
19556 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19557
19558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 -------------------------------------------------------------------------*/
19561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19562 ( NULL == pEventData->pEventData))
19563 {
19564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 }
19569
19570 /*-------------------------------------------------------------------------
19571 Extract response and send it to UMAC
19572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 wpalMemoryCopy( &halNvDownloadRsp,
19574 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 sizeof(halNvDownloadRsp));
19576
19577 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19578
19579 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19581 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 {
19583 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019584 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 }
19586 else
19587 {
19588 /*Reset the Nv related global information in WDI context information */
19589 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19590 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19591 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19592 /*call WDA callback function for last fragment */
19593 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19594 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19595 }
19596
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019598}
19599#ifdef WLAN_FEATURE_VOWIFI_11R
19600/**
19601 @brief Process Add TSpec Rsp function (called when a response
19602 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019603
19604 @param pWDICtx: pointer to the WLAN DAL context
19605 pEventData: pointer to the event information structure
19606
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 @see
19608 @return Result of the function call
19609*/
19610WDI_Status
19611WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019612(
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 WDI_ControlBlockType* pWDICtx,
19614 WDI_EventInfoType* pEventData
19615)
19616{
19617 WDI_Status wdiStatus;
19618 tAggrAddTsRspParams aggrAddTsRsp;
19619 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19621
19622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 -------------------------------------------------------------------------*/
19625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19626 ( NULL == pEventData->pEventData))
19627 {
19628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 }
19633
19634 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19635
19636 /*-------------------------------------------------------------------------
19637 Extract response and send it to UMAC
19638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 wpalMemoryCopy( &aggrAddTsRsp,
19640 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 sizeof(aggrAddTsRsp));
19642
19643 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019644 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019645
19646 /*Notify UMAC*/
19647 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19648
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019650}/*WDI_ProcessAddTSpecRsp*/
19651#endif /* WLAN_FEATURE_VOWIFI_11R */
19652
19653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019656
19657 @param pWDICtx: pointer to the WLAN DAL context
19658 pEventData: pointer to the event information structure
19659
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 @see
19661 @return Result of the function call
19662*/
19663WDI_Status
19664WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019665(
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 WDI_ControlBlockType* pWDICtx,
19667 WDI_EventInfoType* pEventData
19668)
19669{
19670 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19671 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19672 tHalHostResumeRspParams hostResumeRspMsg;
19673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19674
19675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 -------------------------------------------------------------------------*/
19678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19679 ( NULL == pEventData->pEventData))
19680 {
19681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 }
19686
19687 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19688
19689 /*-------------------------------------------------------------------------
19690 Extract response and send it to UMAC
19691 -------------------------------------------------------------------------*/
19692
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 (wpt_uint8*)pEventData->pEventData,
19695 sizeof(hostResumeRspMsg));
19696
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 wdiResumeRspParams.wdiStatus =
19698 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019699
19700 /*Notify UMAC*/
19701 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19702
19703 return WDI_STATUS_SUCCESS;
19704}
19705
19706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019709
19710 @param pWDICtx: pointer to the WLAN DAL context
19711 pEventData: pointer to the event information structure
19712
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 @see
19714 @return Result of the function call
19715*/
19716WDI_Status
19717WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019718(
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 WDI_ControlBlockType* pWDICtx,
19720 WDI_EventInfoType* pEventData
19721)
19722{
19723 WDI_Status wdiStatus;
19724 eHalStatus halStatus;
19725 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19727
19728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 -------------------------------------------------------------------------*/
19731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19732 ( NULL == pEventData->pEventData))
19733 {
19734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019739
19740 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
19742 /*-------------------------------------------------------------------------
19743 Extract response and send it to UMAC
19744 -------------------------------------------------------------------------*/
19745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019747
19748 /*Notify UMAC*/
19749 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19750
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019752}/*WDI_ProcessSetTxPerTrackingRsp*/
19753
19754/*==========================================================================
19755 Indications from HAL
19756 ==========================================================================*/
19757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 indication of this kind is being received over the bus
19760 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019761
19762 @param pWDICtx: pointer to the WLAN DAL context
19763 pEventData: pointer to the event information structure
19764
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 @see
19766 @return Result of the function call
19767*/
19768WDI_Status
19769WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019770(
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 WDI_ControlBlockType* pWDICtx,
19772 WDI_EventInfoType* pEventData
19773)
19774{
19775 WDI_LowLevelIndType wdiInd;
19776 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19778
19779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 -------------------------------------------------------------------------*/
19782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19783 ( NULL == pEventData->pEventData))
19784 {
19785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 }
19790
19791 /*-------------------------------------------------------------------------
19792 Extract indication and send it to UMAC
19793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019794 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 sizeof(tHalRSSINotification));
19797
19798 /*Fill in the indication parameters*/
19799 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19800 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19801 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19802 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19803 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19804 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19805 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19806 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19807 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19808 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19809 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19810 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19811 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019812 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19813 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019814
ltimariu034f7d62013-01-24 18:54:33 -080019815 if ( pWDICtx->wdiLowLevelIndCB )
19816 {
19817 /*Notify UMAC of indication*/
19818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19819 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019820
19821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019822}/*WDI_ProcessLowRSSIInd*/
19823
19824
19825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 an indication of this kind is being received over the
19828 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 @param pWDICtx: pointer to the WLAN DAL context
19831 pEventData: pointer to the event information structure
19832
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 @see
19834 @return Result of the function call
19835*/
19836WDI_Status
19837WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019838(
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 WDI_ControlBlockType* pWDICtx,
19840 WDI_EventInfoType* pEventData
19841)
19842{
19843 WDI_Status wdiStatus;
19844 eHalStatus halStatus;
19845 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019846 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19848
19849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 -------------------------------------------------------------------------*/
19852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19853 ( NULL == pEventData->pEventData))
19854 {
19855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019860 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 /*-------------------------------------------------------------------------
19862 Extract indication and send it to UMAC
19863 -------------------------------------------------------------------------*/
19864 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19865 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019867
19868 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019869 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019870 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19871 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019872 if ( pWDICtx->wdiLowLevelIndCB )
19873 {
19874 /*Notify UMAC*/
19875 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19876 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019877
19878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879}/*WDI_ProcessMissedBeaconInd*/
19880
19881
19882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019883 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 an indication of this kind is being received over the
19885 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019886
19887 @param pWDICtx: pointer to the WLAN DAL context
19888 pEventData: pointer to the event information structure
19889
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 @see
19891 @return Result of the function call
19892*/
19893WDI_Status
19894WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019895(
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 WDI_ControlBlockType* pWDICtx,
19897 WDI_EventInfoType* pEventData
19898)
19899{
19900 WDI_Status wdiStatus;
19901 eHalStatus halStatus;
19902 WDI_LowLevelIndType wdiInd;
19903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19904
19905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 -------------------------------------------------------------------------*/
19908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19909 ( NULL == pEventData->pEventData))
19910 {
19911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 }
19916
19917 /*-------------------------------------------------------------------------
19918 Extract indication and send it to UMAC
19919 -------------------------------------------------------------------------*/
19920 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19921 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019923
19924 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 /* ! TO DO - fill in from HAL struct:
19927 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19928
ltimariu034f7d62013-01-24 18:54:33 -080019929 if ( pWDICtx->wdiLowLevelIndCB )
19930 {
19931 /*Notify UMAC*/
19932 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19933 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019934
19935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019936}/*WDI_ProcessUnkAddrFrameInd*/
19937
19938
19939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 indication of this kind is being received over the bus
19942 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019943
19944 @param pWDICtx: pointer to the WLAN DAL context
19945 pEventData: pointer to the event information structure
19946
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 @see
19948 @return Result of the function call
19949*/
19950WDI_Status
19951WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019952(
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 WDI_ControlBlockType* pWDICtx,
19954 WDI_EventInfoType* pEventData
19955)
19956{
19957 WDI_LowLevelIndType wdiInd;
19958 tpSirMicFailureInd pHalMicFailureInd;
19959
19960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19961
19962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 -------------------------------------------------------------------------*/
19965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19966 ( NULL == pEventData->pEventData))
19967 {
19968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019972 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019973
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19975 /*-------------------------------------------------------------------------
19976 Extract indication and send it to UMAC
19977 -------------------------------------------------------------------------*/
19978
19979 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19982 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19983 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19984 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19985 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19986 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19987 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19988 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 pHalMicFailureInd->info.keyId;
19995 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19996 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19997 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19998 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019999
20000 if ( pWDICtx->wdiLowLevelIndCB )
20001 {
20002 /*Notify UMAC*/
20003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20004 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
20006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020007}/*WDI_ProcessMicFailureInd*/
20008
20009
20010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 an indication of this kind is being received over the
20013 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020014
20015 @param pWDICtx: pointer to the WLAN DAL context
20016 pEventData: pointer to the event information structure
20017
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 @see
20019 @return Result of the function call
20020*/
20021WDI_Status
20022WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020023(
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 WDI_ControlBlockType* pWDICtx,
20025 WDI_EventInfoType* pEventData
20026)
20027{
20028 WDI_Status wdiStatus;
20029 eHalStatus halStatus;
20030 WDI_LowLevelIndType wdiInd;
20031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20032
20033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 -------------------------------------------------------------------------*/
20036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20037 ( NULL == pEventData->pEventData))
20038 {
20039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 }
20044
20045 /*-------------------------------------------------------------------------
20046 Extract indication and send it to UMAC
20047 -------------------------------------------------------------------------*/
20048
20049 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020052
20053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20054 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020055
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20058 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020059
ltimariu034f7d62013-01-24 18:54:33 -080020060 if ( pWDICtx->wdiLowLevelIndCB )
20061 {
20062 /*Notify UMAC*/
20063 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20064 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020065
20066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020067}/*WDI_ProcessFatalErrorInd*/
20068
20069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 an indication of this kind is being received over the
20072 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020073
20074 @param pWDICtx: pointer to the WLAN DAL context
20075 pEventData: pointer to the event information structure
20076
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 @see
20078 @return Result of the function call
20079*/
20080WDI_Status
20081WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020082(
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 WDI_ControlBlockType* pWDICtx,
20084 WDI_EventInfoType* pEventData
20085)
20086{
20087 tDeleteStaContextParams halDelSTACtx;
20088 WDI_LowLevelIndType wdiInd;
20089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20090
20091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 -------------------------------------------------------------------------*/
20094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20095 ( NULL == pEventData->pEventData))
20096 {
20097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 }
20102
20103 /*-------------------------------------------------------------------------
20104 Extract indication and send it to UMAC
20105 -------------------------------------------------------------------------*/
20106
20107 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 wpalMemoryCopy( &halDelSTACtx,
20109 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 sizeof(halDelSTACtx));
20111
20112 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020114
20115 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20116 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20117 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20118 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20119
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20125 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020126
ltimariu034f7d62013-01-24 18:54:33 -080020127 if ( pWDICtx->wdiLowLevelIndCB )
20128 {
20129 /*Notify UMAC*/
20130 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20131 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020132
20133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020134}/*WDI_ProcessDelSTAInd*/
20135
20136/**
20137*@brief Process Coex Indication function (called when
20138 an indication of this kind is being received over the
20139 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020140
20141 @param pWDICtx: pointer to the WLAN DAL context
20142 pEventData: pointer to the event information structure
20143
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 @see
20145 @return Result of the function call
20146*/
20147WDI_Status
20148WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020149(
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 WDI_ControlBlockType* pWDICtx,
20151 WDI_EventInfoType* pEventData
20152)
20153{
20154 WDI_LowLevelIndType wdiInd;
20155 tCoexIndMsg halCoexIndMsg;
20156 wpt_uint32 index;
20157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20158
20159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 -------------------------------------------------------------------------*/
20162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20163 ( NULL == pEventData->pEventData ))
20164 {
20165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 }
20170
20171 /*-------------------------------------------------------------------------
20172 Extract indication and send it to UMAC
20173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20175 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 sizeof(halCoexIndMsg.coexIndParams) );
20177
20178 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 wdiInd.wdiIndicationType = WDI_COEX_IND;
20180 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020181 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20182 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 }
20185
20186 // DEBUG
20187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20188 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20190 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20191 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20192 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20193 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020194
ltimariu034f7d62013-01-24 18:54:33 -080020195 if ( pWDICtx->wdiLowLevelIndCB )
20196 {
20197 /*Notify UMAC*/
20198 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020200
20201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020202}/*WDI_ProcessCoexInd*/
20203
20204/**
20205*@brief Process Tx Complete Indication function (called when
20206 an indication of this kind is being received over the
20207 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020208
20209 @param pWDICtx: pointer to the WLAN DAL context
20210 pEventData: pointer to the event information structure
20211
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 @see
20213 @return Result of the function call
20214*/
20215WDI_Status
20216WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020217(
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 WDI_ControlBlockType* pWDICtx,
20219 WDI_EventInfoType* pEventData
20220)
20221{
20222 WDI_LowLevelIndType wdiInd;
20223 tTxComplIndMsg halTxComplIndMsg;
20224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20225
20226 /*-------------------------------------------------------------------------
20227 Sanity check
20228 -------------------------------------------------------------------------*/
20229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20230 ( NULL == pEventData->pEventData ))
20231 {
20232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ASSERT( 0 );
20235 return WDI_STATUS_E_FAILURE;
20236 }
20237
20238 /*-------------------------------------------------------------------------
20239 Extract indication and send it to UMAC
20240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20242 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 sizeof(halTxComplIndMsg.txComplParams) );
20244
20245 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020246 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20247 wdiInd.wdiIndicationData.tx_complete_status
20248 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
ltimariu034f7d62013-01-24 18:54:33 -080020250 if ( pWDICtx->wdiLowLevelIndCB )
20251 {
20252 /*Notify UMAC*/
20253 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020255
20256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020257}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020258#ifdef FEATURE_WLAN_TDLS
20259/**
20260*@brief Process TDLS Indication function (called when
20261 an indication of this kind is being received over the
20262 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020263
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020264 @param pWDICtx: pointer to the WLAN DAL context
20265 pEventData: pointer to the event information structure
20266
20267 @see
20268 @return Result of the function call
20269*/
20270WDI_Status
20271WDI_ProcessTdlsInd
20272(
20273 WDI_ControlBlockType* pWDICtx,
20274 WDI_EventInfoType* pEventData
20275)
20276{
20277 WDI_LowLevelIndType wdiInd;
20278 tTdlsIndMsg halTdlsIndMsg;
20279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20280
20281 /*-------------------------------------------------------------------------
20282 Sanity check
20283 -------------------------------------------------------------------------*/
20284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20285 ( NULL == pEventData->pEventData ))
20286 {
20287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20288 "%s: Invalid parameters", __func__);
20289 WDI_ASSERT( 0 );
20290 return WDI_STATUS_E_FAILURE;
20291 }
20292
20293 /*-------------------------------------------------------------------------
20294 Extract indication and send it to UMAC
20295 -------------------------------------------------------------------------*/
20296 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20297 pEventData->pEventData,
20298 sizeof(halTdlsIndMsg.tdlsIndParams) );
20299
20300 /*Fill in the indication parameters*/
20301 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20302
20303 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20304 = halTdlsIndMsg.tdlsIndParams.status;
20305
20306 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20307 = halTdlsIndMsg.tdlsIndParams.staIdx;
20308
20309 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20310 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20311
20312 /*Notify UMAC*/
20313 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20314
20315 return WDI_STATUS_SUCCESS;
20316}/*WDI_ProcessTdlsInd*/
20317#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020318/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020319*@brief Process Noa Start Indication function (called when
20320 an indication of this kind is being received over the
20321 bus from HAL)
20322
20323 @param pWDICtx: pointer to the WLAN DAL context
20324 pEventData: pointer to the event information structure
20325
20326 @see
20327 @return Result of the function call
20328*/
20329WDI_Status
20330WDI_ProcessP2pNoaStartInd
20331(
20332 WDI_ControlBlockType* pWDICtx,
20333 WDI_EventInfoType* pEventData
20334)
20335{
20336 WDI_LowLevelIndType wdiInd;
20337 tNoaStartIndMsg halNoaStartIndMsg;
20338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20339
20340 /*-------------------------------------------------------------------------
20341 Sanity check
20342 -------------------------------------------------------------------------*/
20343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20344 ( NULL == pEventData->pEventData ))
20345 {
20346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20347 "%s: Invalid parameters", __func__);
20348 WDI_ASSERT( 0 );
20349 return WDI_STATUS_E_FAILURE;
20350 }
20351
20352 /*-------------------------------------------------------------------------
20353 Extract indication and send it to UMAC
20354 -------------------------------------------------------------------------*/
20355 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20356 pEventData->pEventData,
20357 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20358
20359 /*Fill in the indication parameters*/
20360 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20361
20362 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20363 = halNoaStartIndMsg.noaStartIndParams.status;
20364
20365 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20366 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20367
20368 /*Notify UMAC*/
20369 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20370
20371 return WDI_STATUS_SUCCESS;
20372}/*WDI_ProcessNoaAttrInd*/
20373
20374/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020375*@brief Process Noa Attr Indication function (called when
20376 an indication of this kind is being received over the
20377 bus from HAL)
20378
20379 @param pWDICtx: pointer to the WLAN DAL context
20380 pEventData: pointer to the event information structure
20381
20382 @see
20383 @return Result of the function call
20384*/
20385WDI_Status
20386WDI_ProcessP2pNoaAttrInd
20387(
20388 WDI_ControlBlockType* pWDICtx,
20389 WDI_EventInfoType* pEventData
20390)
20391{
20392 WDI_LowLevelIndType wdiInd;
20393 tNoaAttrIndMsg halNoaAttrIndMsg;
20394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20395
20396 /*-------------------------------------------------------------------------
20397 Sanity check
20398 -------------------------------------------------------------------------*/
20399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20400 ( NULL == pEventData->pEventData ))
20401 {
20402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 WDI_ASSERT( 0 );
20405 return WDI_STATUS_E_FAILURE;
20406 }
20407
20408 /*-------------------------------------------------------------------------
20409 Extract indication and send it to UMAC
20410 -------------------------------------------------------------------------*/
20411 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20412 pEventData->pEventData,
20413 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20414
20415 /*Fill in the indication parameters*/
20416 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020417
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20419 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020420
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20422 = halNoaAttrIndMsg.noaAttrIndParams.index;
20423 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20424 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20425 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20426 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20429 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20431 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20432 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20433 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20435 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20438 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20439 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20440 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20441 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20442 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20443 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20444 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20445
ltimariu034f7d62013-01-24 18:54:33 -080020446 if ( pWDICtx->wdiLowLevelIndCB )
20447 {
20448 /*Notify UMAC*/
20449 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020451
20452 return WDI_STATUS_SUCCESS;
20453}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020454
20455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020457 an indication of this kind is being received over the
20458 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020459
20460 @param pWDICtx: pointer to the WLAN DAL context
20461 pEventData: pointer to the event information structure
20462
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 @see
20464 @return Result of the function call
20465*/
20466WDI_Status
20467WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020468(
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 WDI_ControlBlockType* pWDICtx,
20470 WDI_EventInfoType* pEventData
20471)
20472{
20473 WDI_LowLevelIndType wdiInd;
20474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 /*-------------------------------------------------------------------------
20477 Extract indication and send it to UMAC
20478 -------------------------------------------------------------------------*/
20479 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20481
ltimariu034f7d62013-01-24 18:54:33 -080020482 if ( pWDICtx->wdiLowLevelIndCB )
20483 {
20484 /*Notify UMAC*/
20485 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20486 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020487
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020489}/*WDI_ProcessTxPerHitInd*/
20490
Jeff Johnson295189b2012-06-20 16:38:30 -070020491/**
Yue Ma365933a2013-08-14 15:59:08 -070020492 @brief Process Periodic Tx Pattern Fw Indication function
20493
20494 @param pWDICtx: pointer to the WLAN DAL context
20495 pEventData: pointer to the event information structure
20496
20497 @see
20498 @return Result of the function call
20499*/
20500WDI_Status
20501WDI_ProcessPeriodicTxPtrnFwInd
20502(
20503 WDI_ControlBlockType* pWDICtx,
20504 WDI_EventInfoType* pEventData
20505)
20506{
20507 WDI_LowLevelIndType wdiInd;
20508
20509 /*-------------------------------------------------------------------------
20510 Sanity check
20511 -------------------------------------------------------------------------*/
20512 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20513 (NULL == pEventData->pEventData))
20514 {
20515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20516 "%s: Invalid parameters", __func__);
20517 WDI_ASSERT(0);
20518 return WDI_STATUS_E_FAILURE;
20519 }
20520
20521 /*-------------------------------------------------------------------------
20522 Extract indication and send it to UMAC
20523 -------------------------------------------------------------------------*/
20524 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20525 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20526 sizeof(tHalPeriodicTxPtrnFwInd));
20527
20528 if (pWDICtx->wdiLowLevelIndCB)
20529 {
20530 /*Notify UMAC*/
20531 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20532 }
20533
20534 return WDI_STATUS_SUCCESS;
20535}
20536
20537/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 @brief WDI_ProcessFTMCommandReq
20539 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020540
20541 @param pWDICtx: pointer to the WLAN DAL context
20542 pEventData: pointer to the event information structure
20543
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 @see
20545 @return Result of the function call
20546*/
20547WDI_Status
20548WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020549(
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 WDI_ControlBlockType* pWDICtx,
20551 WDI_EventInfoType* pEventData
20552)
20553{
20554 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20555 wpt_uint8 *ftmCommandBuffer = NULL;
20556 wpt_uint16 dataOffset;
20557 wpt_uint16 bufferSize;
20558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 -------------------------------------------------------------------------*/
20561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20562 ( NULL == pEventData->pEventData))
20563
20564 {
20565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 }
20570
20571 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20572
20573 /* Get MSG Buffer */
20574 WDI_GetMessageBuffer(pWDICtx,
20575 WDI_FTM_CMD_REQ,
20576 ftmCommandReq->bodyLength,
20577 &ftmCommandBuffer,
20578 &dataOffset,
20579 &bufferSize);
20580
20581 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20582 ftmCommandReq->FTMCommandBody,
20583 ftmCommandReq->bodyLength);
20584
20585 /* Send MSG */
20586 return WDI_SendMsg(pWDICtx,
20587 ftmCommandBuffer,
20588 bufferSize,
20589 pEventData->pCBfnc,
20590 pEventData->pUserData,
20591 WDI_FTM_CMD_RESP);
20592}
20593
20594/**
20595 @brief WDI_ProcessFTMCommandRsp
20596 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020597
20598 @param pWDICtx: pointer to the WLAN DAL context
20599 pEventData: pointer to the event information structure
20600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 @see
20602 @return Result of the function call
20603*/
20604WDI_Status
20605WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020606(
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 WDI_ControlBlockType* pWDICtx,
20608 WDI_EventInfoType* pEventData
20609)
20610{
20611 WDI_FTMCommandRspCb ftmCMDRspCb;
20612 tProcessPttRspParams *ftmCMDRspData = NULL;
20613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20614
20615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 -------------------------------------------------------------------------*/
20618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20619 ( NULL == pEventData->pEventData))
20620 {
20621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 }
20626
20627 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20628
20629 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20630
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20632 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20634
20635 /*Notify UMAC*/
20636 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20637
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020639}
Jeff Johnson295189b2012-06-20 16:38:30 -070020640/**
20641 @brief WDI_ProcessHalDumpCmdReq
20642 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020643
20644 @param pWDICtx: pointer to the WLAN DAL context
20645 pEventData: pointer to the event information structure
20646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 @see
20648 @return Result of the function call
20649*/
20650WDI_Status
20651WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020652(
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 WDI_ControlBlockType* pWDICtx,
20654 WDI_EventInfoType* pEventData
20655)
20656{
20657 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20658 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20659 wpt_uint16 usDataOffset = 0;
20660 wpt_uint16 usSendSize = 0;
20661 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020663
20664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 -------------------------------------------------------------------------*/
20667 if (( NULL == pEventData ) ||
20668 ( NULL == pEventData->pEventData) ||
20669 ( NULL == pEventData->pCBfnc ))
20670 {
20671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 }
20676
20677 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20678 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20679
20680 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020691
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 /*-----------------------------------------------------------------------
20693 Get message buffer
20694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20697 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20700 {
20701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020702 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 }
20707
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wpalMemoryCopy( pSendBuffer+usDataOffset,
20709 &halDumpCmdReqMsg.dumpCmdReqParams,
20710 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020711
20712 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020714
20715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020716 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20719 wdiHALDumpCmdRspCb, pEventData->pUserData,
20720 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020721}
20722
20723/**
20724 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 Process hal Dump Command Response from HAL, simply route to HDD
20726
20727 @param pWDICtx: pointer to the WLAN DAL context
20728 pEventData: pointer to the event information structure
20729
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 @see
20731 @return Result of the function call
20732*/
20733WDI_Status
20734WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020735(
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ControlBlockType* pWDICtx,
20737 WDI_EventInfoType* pEventData
20738)
20739{
20740 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020741 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20743
20744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 -------------------------------------------------------------------------*/
20747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20748 ( NULL == pEventData->pEventData))
20749 {
20750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 }
20755
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757
20758 /*Initialize the WDI Response structure */
20759 wdiHALDumpCmdRsp.usBufferLen = 0;
20760 wdiHALDumpCmdRsp.pBuffer = NULL;
20761
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020762 wpalMemoryCopy( &halDumpCmdRspParams,
20763 pEventData->pEventData,
20764 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020767 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020768
20769 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020770 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 {
20772 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020773 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20774 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20775
20776 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20777 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020778 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020780
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 /*Notify UMAC*/
20782 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20783
20784 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20785 {
20786 /* Free the allocated buffer */
20787 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20788 }
20789 return WDI_STATUS_SUCCESS;
20790}
20791
20792/*==========================================================================
20793 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020794
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020797==========================================================================*/
20798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 when it wishes to send up a notification like the ones
20801 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020802
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020804
20805 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 wctsNotifyCBData: the callback data of the user
20808
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020810
20811 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020812*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020813void
Jeff Johnson295189b2012-06-20 16:38:30 -070020814WDI_NotifyMsgCTSCB
20815(
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 WCTS_NotifyEventType wctsEvent,
20818 void* wctsNotifyCBData
20819)
20820{
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20823
20824 if (NULL == pWDICtx )
20825 {
20826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 }
20831
20832 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20833 {
20834 /* callback presumably occurred after close */
20835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020836 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020837 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 }
20839
20840 if ( WCTS_EVENT_OPEN == wctsEvent )
20841 {
20842 /*Flag must be set atomically as it is checked from incoming request
20843 functions*/
20844 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020846
20847 /*Nothing to do - so try to dequeue any pending request that may have
20848 occurred while we were trying to establish this*/
20849 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 {
20854 /*Flag must be set atomically as it is checked from incoming request
20855 functions*/
20856 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858
20859 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 wpalMutexRelease(&pWDICtx->wptMutex);
20862
20863 /*Notify that the Control Channel is closed */
20864 wpalEventSet(&pWDICtx->wctsActionEvent);
20865 }
20866
20867}/*WDI_NotifyMsgCTSCB*/
20868
20869
20870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 when it wishes to send up a packet received over the
20873 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020876
20877 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 pMsg: the packet
20879 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 wctsRxMsgCBData: the callback data of the user
20881
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
20884 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020885*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020886void
20887WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020888(
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 void* pMsg,
20891 wpt_uint32 uLen,
20892 void* wctsRxMsgCBData
20893)
20894{
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 tHalMsgHeader *pHalMsgHeader;
20896 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20899
20900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 ( uLen < sizeof(tHalMsgHeader)))
20905 {
20906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 }
20911
20912 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20913 {
20914 /* callback presumably occurred after close */
20915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020916 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 }
20919
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 context - so no serialization is necessary here
20922 ! - revisit this assumption */
20923
20924 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20925
20926 if ( uLen != pHalMsgHeader->msgLen )
20927 {
20928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20929 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020930 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20931 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 }
20933
20934 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20935
20936 /*The message itself starts after the header*/
20937 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20938 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20939 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20940 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20941
20942
20943 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20944 {
20945 /*Stop the timer as the response was received */
20946 /*!UT - check for potential race conditions between stop and response */
20947 wpalTimerStop(&pWDICtx->wptResponseTimer);
20948 }
20949 /* Check if we receive a response message which is not expected */
20950 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20951 {
20952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20953 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20954 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20957 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080020958
20959 if (gWDICb.bEnableSSR == false)
20960 {
20961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20962 "SSR is not enabled on WDI timeout");
20963 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20964 return;
20965 }
20966 wpalWcnssResetIntr();
20967 /* if this timer fires, it means Riva did not receive the FIQ */
20968 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
20969
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 return;
20971 }
20972
20973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20974 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20975
20976 /*Post response event to the state machine*/
20977 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20978
20979}/*WDI_RXMsgCTSCB*/
20980
20981
20982/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020984========================================================================*/
20985
20986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020989
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 @param pWDICtx - pointer to the control block
20991
20992 @return Result of the function call
20993*/
20994WPT_INLINE WDI_Status
20995WDI_CleanCB
20996(
20997 WDI_ControlBlockType* pWDICtx
20998)
20999{
21000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21001
21002 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021004
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21007 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21008
21009 WDI_ResetAssocSessions( pWDICtx );
21010
21011 return WDI_STATUS_SUCCESS;
21012}/*WDI_CleanCB*/
21013
21014
21015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021017
Jeff Johnsone7245742012-09-05 17:12:55 -070021018
21019 @param pWDICtx: pointer to the WLAN DAL context
21020 pEventData: pointer to the event information structure
21021
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 @see
21023 @return Result of the function call
21024*/
21025WPT_INLINE WDI_Status
21026WDI_ProcessRequest
21027(
21028 WDI_ControlBlockType* pWDICtx,
21029 WDI_EventInfoType* pEventData
21030)
21031{
21032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21033
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 already checked these pointers*/
21036
21037 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21038 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021041 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 WDI_getReqMsgString(pEventData->wdiRequest),
21043 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21044 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21045 }
21046 else
21047 {
21048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 pEventData->wdiRequest);
21051 return WDI_STATUS_E_NOT_IMPLEMENT;
21052 }
21053}/*WDI_ProcessRequest*/
21054
21055
21056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021059 prefixes it with a send message header
21060
21061 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 wdiReqType: type of the request being sent
21063 uBufferLen: message buffer len
21064 pMsgBuffer: resulting allocated buffer
21065 pusDataOffset: offset in the buffer where the caller
21066 can start copying its message data
21067 puBufferSize: the resulting buffer size (offset+buff
21068 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021069
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 @see
21071 @return Result of the function call
21072*/
21073WDI_Status
21074WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021075(
21076 WDI_ControlBlockType* pWDICtx,
21077 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 wpt_uint8** pMsgBuffer,
21080 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 wpt_uint16* pusBufferSize
21082)
21083{
21084 tHalMsgHeader halMsgHeader;
21085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21086
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 again*/
21089
21090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21095 if ( NULL == *pMsgBuffer )
21096 {
21097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21098 "Unable to allocate message buffer for req %s (%d)",
21099 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 }
21104
21105 /*-------------------------------------------------------------------------
21106 Fill in the message header
21107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21109 /* Fill msgVersion */
21110#ifdef WLAN_FEATURE_11AC
21111 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021112 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 else
21114#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021115 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21118 *pusDataOffset = sizeof(halMsgHeader);
21119 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21120
21121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122}/*WDI_GetMessageBuffer*/
21123
21124
21125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 the CB
21129
21130 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021132
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 usSendSize size of the buffer to be sent
21134 pRspCb: response callback - save in the WDI
21135 CB
21136 pUserData: user data associated with the
21137 callback
21138 wdiExpectedResponse: the code of the response that is
21139 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021140
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 @see
21142 @return Result of the function call
21143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021145WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021146(
21147 WDI_ControlBlockType* pWDICtx,
21148 wpt_uint8* pSendBuffer,
21149 wpt_uint32 usSendSize,
21150 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021151 void* pUserData,
21152 WDI_ResponseEnumType wdiExpectedResponse
21153)
21154{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021155 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021156 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21158
21159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 ------------------------------------------------------------------------*/
21162 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 pWDICtx->pfncRspCB = pRspCb;
21164 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021165
21166 /*-----------------------------------------------------------------------
21167 Call the CTS to send this message over - free message afterwards
21168 - notify transport failure
21169 Note: CTS is reponsible for freeing the message buffer.
21170 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021171 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21172 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21173 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 "Failed to send message over the bus - catastrophic failure");
21177
Jeff Johnsond13512a2012-07-17 11:42:19 -070021178 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021180 else
21181 {
21182 /* even when message was placed in CTS deferred Q, we will treat it
21183 success but log this info
21184 */
21185 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21186 {
21187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21188 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21189 "response %s (%d)",
21190 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21191 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021192 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021193 }
21194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021195
Jeff Johnsond13512a2012-07-17 11:42:19 -070021196 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 if ( NULL != pWDICtx->wdiReqStatusCB )
21198 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021199 /*Inform originator whether request went through or not*/
21200 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21201 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 pWDICtx->wdiReqStatusCB = NULL;
21203 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021204 callback(wdiStatus, callbackContext);
21205
21206 /*For WDI requests which have registered a request callback,
21207 inform the WDA caller of the same via setting the return value
21208 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21209 end up repeating the functonality in the req callback for the
21210 WDI_STATUS_E_FAILURE case*/
21211 if (wdiStatus == WDI_STATUS_E_FAILURE)
21212 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 }
21214
Jeff Johnsond13512a2012-07-17 11:42:19 -070021215 if ( wdiStatus == WDI_STATUS_SUCCESS )
21216 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 /*Start timer for the expected response */
21218 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021219
21220 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021221 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussainc07e21f2013-11-27 13:57:14 -080021222 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021223 }
21224 else
21225 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021226 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021227 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21228 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021229
Jeff Johnsond13512a2012-07-17 11:42:19 -070021230 return wdiStatus;
21231
Jeff Johnson295189b2012-06-20 16:38:30 -070021232}/*WDI_SendMsg*/
21233
21234
21235
21236/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021237 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 the bus using the control transport and saves some info
21239 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021240
21241 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 pSendBuffer: buffer to be sent
21243 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021244
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 @see
21246 @return Result of the function call
21247*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021249WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021250(
21251 WDI_ControlBlockType* pWDICtx,
21252 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 wpt_uint32 usSendSize
21254)
21255{
21256 wpt_uint32 uStatus ;
21257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21258
21259 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 Note: CTS is reponsible for freeing the message buffer.
21262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 (void*)pSendBuffer, usSendSize );
21265
21266 /*Inform Upper MAC about the outcome of the request*/
21267 if ( NULL != pWDICtx->wdiReqStatusCB )
21268 {
21269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21270 "Send indication status : %d", uStatus);
21271
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021272 /* even if CTS placed indication into its deferred Q, we treat it
21273 * as success and let CTS drain its queue as per smd interrupt to CTS
21274 */
21275 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 -070021276 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 }
21278
21279 /*If sending of the message failed - it is considered catastrophic and
21280 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021281 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21282 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21283
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 {
21285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021286 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021287
21288 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21289 return WDI_STATUS_E_FAILURE;
21290 }
21291
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293}/*WDI_SendIndication*/
21294
21295
21296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 @brief WDI_DetectedDeviceError - called internally by DAL when
21298 it has detected a failure in the device
21299
21300 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 usErrorCode: error code detected by WDI or received
21302 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021303
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021306*/
21307void
21308WDI_DetectedDeviceError
21309(
21310 WDI_ControlBlockType* pWDICtx,
21311 wpt_uint16 usErrorCode
21312)
21313{
21314 WDI_LowLevelIndType wdiInd;
21315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21316
21317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21318 "Device Error detected code: %d - transitioning to stopped state",
21319 usErrorCode);
21320
21321 wpalMutexAcquire(&pWDICtx->wptMutex);
21322
21323 WDI_STATableStop(pWDICtx);
21324
21325 WDI_ResetAssocSessions(pWDICtx);
21326
21327 /*Set the expected state transition to stopped - because the device
21328 experienced a failure*/
21329 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21330
21331 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021333
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021335
21336 /*TO DO: - there should be an attempt to reset the device here*/
21337
21338 wpalMutexRelease(&pWDICtx->wptMutex);
21339
21340 /*------------------------------------------------------------------------
21341 Notify UMAC if a handler is registered
21342 ------------------------------------------------------------------------*/
21343 if (pWDICtx->wdiLowLevelIndCB)
21344 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21346 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347
21348 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21349 }
21350}/*WDI_DetectedDeviceError*/
21351
21352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 we started on send message has expire - this should
21355 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021356 reply - trigger catastrophic failure
21357 @param
21358
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021360
21361 @see
21362 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021363*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021364void
Jeff Johnson295189b2012-06-20 16:38:30 -070021365WDI_ResponseTimerCB
21366(
21367 void *pUserData
21368)
21369{
21370 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21372
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021373 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021374 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 }
21380
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021381 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021382 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussainc07e21f2013-11-27 13:57:14 -080021383 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021384
21385 /* If response timer is running at this time that means this timer
21386 * event is not for the last request but rather last-to-last request and
21387 * this timer event has come after we recevied respone for last-to-last
21388 * message
21389 */
21390 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21391 {
21392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21393 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021394 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021395 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21397 "uArchTimeStampTmrStart: %llu seconds, "
21398 "uArchTimeStampTmrExp: %llu seconds",
21399 pWDICtx->uArchTimeStampRspTmrStart,
21400 pWDICtx->uArchTimeStampRspTmrExp);
21401
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021402 return;
21403 }
21404
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021405 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 {
21407
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021409 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021410 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021411 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021412 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21413 pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21415 "uArchTimeStampTmrStart: %llu seconds, "
21416 "uArchTimeStampTmrExp: %llu seconds",
21417 pWDICtx->uArchTimeStampRspTmrStart,
21418 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021419
21420 /* WDI timeout means Riva is not responding or SMD communication to Riva
21421 * is not happening. The only possible way to recover from this error
21422 * is to initiate SSR from APPS.
21423 * There is also an option to re-enable wifi, which will eventually
21424 * trigger SSR
21425 */
21426 if (gWDICb.bEnableSSR == false)
21427 {
21428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21429 "SSR is not enabled on WDI timeout");
21430 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21431 return;
21432 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021433#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021434 wpalWcnssResetIntr();
21435 /* if this timer fires, it means Riva did not receive the FIQ */
21436 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021437#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021438 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21439 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021440#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 }
21442 else
21443 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021445 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021446 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021447 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21448 pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21450 "uArchTimeStampTmrStart: %llu seconds, "
21451 "uArchTimeStampTmrExp: %llu seconds",
21452 pWDICtx->uArchTimeStampRspTmrStart,
21453 pWDICtx->uArchTimeStampRspTmrExp);
21454
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 }
21456
21457 return;
21458
21459}/*WDI_ResponseTimerCB*/
21460
21461
21462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021464
Jeff Johnsone7245742012-09-05 17:12:55 -070021465
21466 @param pWDICtx: pointer to the WLAN DAL context
21467 pEventData: pointer to the event information structure
21468
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 @see
21470 @return Result of the function call
21471*/
21472WPT_INLINE WDI_Status
21473WDI_ProcessResponse
21474(
21475 WDI_ControlBlockType* pWDICtx,
21476 WDI_EventInfoType* pEventData
21477)
21478{
21479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21480
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 already checked these pointers
21483 ! - revisit this assumption */
21484 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21485 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021488 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 WDI_getRespMsgString(pEventData->wdiResponse),
21490 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21491 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21492 }
21493 else
21494 {
21495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 pEventData->wdiResponse);
21498 return WDI_STATUS_E_NOT_IMPLEMENT;
21499 }
21500}/*WDI_ProcessResponse*/
21501
21502
21503/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021505=========================================================================*/
21506
21507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 @brief Utility function used by the DAL Core to help queue a
21509 request that cannot be processed right away.
21510 @param
21511
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 pWDICtx: - pointer to the WDI control block
21513 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 queued
21515
21516 @see
21517 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021518*/
21519WDI_Status
21520WDI_QueuePendingReq
21521(
21522 WDI_ControlBlockType* pWDICtx,
21523 WDI_EventInfoType* pEventData
21524)
21525{
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21530
21531 if ( NULL == pEventDataQueue )
21532 {
21533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 WDI_ASSERT(0);
21536 return WDI_STATUS_MEM_FAILURE;
21537 }
21538
21539 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21540 pEventDataQueue->pUserData = pEventData->pUserData;
21541 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21542 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021543 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021544
21545 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21546 {
21547 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021548
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 if ( NULL == pEventInfo )
21550 {
21551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 WDI_ASSERT(0);
21554 wpalMemoryFree(pEventDataQueue);
21555 return WDI_STATUS_MEM_FAILURE;
21556 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021557
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21559
21560 }
21561 pEventDataQueue->pEventData = pEventInfo;
21562
21563 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021567
21568 return WDI_STATUS_SUCCESS;
21569}/*WDI_QueuePendingReq*/
21570
21571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 @param
21575
21576 pMsg - pointer to the message
21577
21578 @see
21579 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021580*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021581void
Jeff Johnson295189b2012-06-20 16:38:30 -070021582WDI_PALCtrlMsgCB
21583(
21584 wpt_msg *pMsg
21585)
21586{
21587 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021588 WDI_ControlBlockType* pWDICtx = NULL;
21589 WDI_Status wdiStatus;
21590 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 void* pUserData;
21592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21593
21594 if (( NULL == pMsg )||
21595 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21596 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21597 {
21598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 }
21603
21604 /*Transition back to the state that we had before serialization
21605 - serialization transitions us to BUSY to stop any incomming requests
21606 ! TO DO L: possible race condition here if a request comes in between the
21607 state transition and the post function*/
21608
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021610
21611 /*-----------------------------------------------------------------------
21612 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 -----------------------------------------------------------------------*/
21615 switch ( pEventData->wdiRequest )
21616 {
21617
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21620 break;
21621
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 case WDI_NV_DOWNLOAD_REQ:
21623 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21624 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21625 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21626 {
21627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021628 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21630 }
21631 else
21632 {
21633 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21634 }
21635
21636 break;
21637
21638 default:
21639 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21640 break;
21641 }/*switch ( pEventData->wdiRequest )*/
21642
21643 if ( WDI_STATUS_SUCCESS != wdiStatus )
21644 {
21645 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21646
21647 if ( NULL != pfnReqStatusCB )
21648 {
21649 /*Fail the request*/
21650 pfnReqStatusCB( wdiStatus, pUserData);
21651 }
21652 }
21653
21654 /* Free data - that was allocated when queueing*/
21655 if( pEventData != NULL )
21656 {
21657 if( pEventData->pEventData != NULL )
21658 {
21659 wpalMemoryFree(pEventData->pEventData);
21660 }
21661 wpalMemoryFree(pEventData);
21662 }
21663
21664 if( pMsg != NULL )
21665 {
21666 wpalMemoryFree(pMsg);
21667 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021668
Jeff Johnson295189b2012-06-20 16:38:30 -070021669}/*WDI_PALCtrlMsgCB*/
21670
21671/**
21672 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 and schedule for execution a pending request
21674 @param
21675
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 pWDICtx: - pointer to the WDI control block
21677 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 queued
21679
21680 @see
21681 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021682*/
21683WDI_Status
21684WDI_DequeuePendingReq
21685(
21686 WDI_ControlBlockType* pWDICtx
21687)
21688{
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21693
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021695
21696 if ( NULL == pNode )
21697 {
21698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 return WDI_STATUS_SUCCESS;
21701 }
21702
21703 /*The node actually points to the 1st element inside the Event Data struct -
21704 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021706
21707 /*Serialize processing in the control thread
21708 !TO DO: - check to see if these are all the messages params that need
21709 to be filled in*/
21710 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21711
21712 if ( NULL == palMsg )
21713 {
21714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021715 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 palMsg->callback = WDI_PALCtrlMsgCB;
21721 palMsg->ptr = pEventData;
21722
21723 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 palMsg->val = pWDICtx->uGlobalState;
Leo Chang6e358542013-12-17 13:35:00 -080021725 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021726
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 /*Transition back to BUSY as we need to handle a queued request*/
21728 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021729
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21731
21732 return WDI_STATUS_PENDING;
21733}/*WDI_DequeuePendingReq*/
21734
21735
21736/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021737 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 away.- The assoc requests will be queued by BSSID
21740 @param
21741
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 pWDICtx: - pointer to the WDI control block
21743 pEventData: pointer to the evnt info that needs to be queued
21744 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021745
21746 @see
21747 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021748*/
21749WDI_Status
21750WDI_QueueNewAssocRequest
21751(
21752 WDI_ControlBlockType* pWDICtx,
21753 WDI_EventInfoType* pEventData,
21754 wpt_macAddr macBSSID
21755)
21756{
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 wpt_uint8 i;
21758 WDI_BSSSessionType* pSession = NULL;
21759 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 void* pEventInfo;
21762 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021764
Jeff Johnsone7245742012-09-05 17:12:55 -070021765
21766 /*------------------------------------------------------------------------
21767 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 ------------------------------------------------------------------------*/
21769 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21770 {
21771 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21772 {
21773 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 pSession = &pWDICtx->aBSSSessions[i];
21775 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 }
21777 }
21778
21779 if ( i >= WDI_MAX_BSS_SESSIONS )
21780 {
21781 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021784
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 /*------------------------------------------------------------------------
21786 Fill in the BSSID for this session and set the usage flag
21787 ------------------------------------------------------------------------*/
21788 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021790
21791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 ------------------------------------------------------------------------*/
21794 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21795 if ( NULL == pEventDataQueue )
21796 {
21797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021798 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 WDI_ASSERT(0);
21800 return WDI_STATUS_MEM_FAILURE;
21801 }
21802
21803 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21804 if ( NULL == pSessionIdElement )
21805 {
21806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021807 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 WDI_ASSERT(0);
21809 wpalMemoryFree(pEventDataQueue);
21810 return WDI_STATUS_MEM_FAILURE;
21811 }
21812
21813 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21814 if ( NULL == pEventInfo )
21815 {
21816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021817 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 WDI_ASSERT(0);
21819 wpalMemoryFree(pSessionIdElement);
21820 wpalMemoryFree(pEventDataQueue);
21821 return WDI_STATUS_MEM_FAILURE;
21822 }
21823
21824 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21825 pEventDataQueue->pUserData = pEventData->pUserData;
21826 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21827 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829
21830 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21831 pEventDataQueue->pEventData = pEventInfo;
21832
21833 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021835
21836 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021838
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021840
21841 /*We need to maintain a separate list that keeps track of the order in which
21842 the new assoc requests are being queued such that we can start processing
21843 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 pSessionIdElement->ucIndex = i;
21845 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021846
21847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21848 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021850
21851 /*Return pending as this is what the status of the request is since it has
21852 been queued*/
21853 return WDI_STATUS_PENDING;
21854}/*WDI_QueueNewAssocRequest*/
21855
21856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 away.- The assoc requests will be queued by BSSID
21860 @param
21861
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 pWDICtx: - pointer to the WDI control block
21863 pSession: - session in which to queue
21864 pEventData: pointer to the event info that needs to be
21865 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021866
21867 @see
21868 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021869*/
21870WDI_Status
21871WDI_QueueAssocRequest
21872(
21873 WDI_ControlBlockType* pWDICtx,
21874 WDI_BSSSessionType* pSession,
21875 WDI_EventInfoType* pEventData
21876)
21877{
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021882
21883 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 Sanity check
21885 ------------------------------------------------------------------------*/
21886 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21887 {
21888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021890
Jeff Johnsone7245742012-09-05 17:12:55 -070021891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 }
21893
21894 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 ------------------------------------------------------------------------*/
21897 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21898 if ( NULL == pEventDataQueue )
21899 {
21900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021901 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_ASSERT(0);
21903 return WDI_STATUS_MEM_FAILURE;
21904 }
21905
21906 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21907 if ( NULL == pEventInfo )
21908 {
21909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21910 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021911 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 WDI_ASSERT(0);
21913 wpalMemoryFree(pEventDataQueue);
21914 return WDI_STATUS_MEM_FAILURE;
21915 }
21916
21917 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21918 pEventDataQueue->pUserData = pEventData->pUserData;
21919 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21920 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021922 pEventDataQueue->pEventData = pEventInfo;
21923
21924 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21925
21926 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021928
21929 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021931
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021933
21934 /*The result of this operation is pending because the request has been
21935 queued and it will be processed at a later moment in time */
21936 return WDI_STATUS_PENDING;
21937}/*WDI_QueueAssocRequest*/
21938
21939/**
21940 @brief Utility function used by the DAL Core to help dequeue
21941 an association request that was pending
21942 The request will be queued up in front of the main
21943 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 @param
21945
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021947
21948
21949 @see
21950 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021951*/
21952WDI_Status
21953WDI_DequeueAssocRequest
21954(
21955 WDI_ControlBlockType* pWDICtx
21956)
21957{
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 wpt_list_node* pNode = NULL;
21959 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 WDI_BSSSessionType* pSession;
21961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021962
21963 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 Sanity check
21965 ------------------------------------------------------------------------*/
21966 if ( NULL == pWDICtx )
21967 {
21968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021970
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 }
21973
21974 /*------------------------------------------------------------------------
21975 An association has been completed => a new association can occur
21976 Check to see if there are any pending associations ->
21977 If so , transfer all the pending requests into the busy queue for
21978 processing
21979 These requests have arrived prior to the requests in the busy queue
21980 (bc they needed to be processed in order to be placed in this queue)
21981 => they will be placed at the front of the busy queue
21982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021984
21985 if ( NULL == pNode )
21986 {
21987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 return WDI_STATUS_SUCCESS;
21990 }
21991
21992 /*The node actually points to the 1st element inside the Session Id struct -
21993 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
21996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21997 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21998
21999 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22000 {
22001 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022002
Jeff Johnson295189b2012-06-20 16:38:30 -070022003 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 the front of the main waiting queue for subsequent execution*/
22005 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 while ( NULL != pNode )
22007 {
22008 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22010 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 }
22014 else
22015 {
22016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 WPAL_ASSERT(0);
22019 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22024 wpalMemoryFree(pSessionIdElement);
22025 return WDI_STATUS_SUCCESS;
22026}/*WDI_DequeueAssocRequest*/
22027
22028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 pending requests - all req cb will be called with
22031 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 @param
22033
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022035
22036 @see
22037 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022038*/
22039WDI_Status
22040WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022041(
Jeff Johnson295189b2012-06-20 16:38:30 -070022042 WDI_ControlBlockType* pWDICtx
22043)
22044{
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 void* pUserData;
22049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22050
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022052
22053 /*------------------------------------------------------------------------
22054 Go through all the requests and fail them - this will only be called
22055 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022056 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022057 ------------------------------------------------------------------------*/
22058 while( pNode )
22059 {
22060 /*The node actually points to the 1st element inside the Event Data struct -
22061 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 pEventDataQueue = (WDI_EventInfoType*)pNode;
22063
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22065 if ( NULL != pfnReqStatusCB )
22066 {
22067 /*Fail the request*/
22068 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22069 }
22070 /* Free data - that was allocated when queueing */
22071 if ( pEventDataQueue->pEventData != NULL )
22072 {
22073 wpalMemoryFree(pEventDataQueue->pEventData);
22074 }
22075 wpalMemoryFree(pEventDataQueue);
22076
22077 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22078 {
22079 break;
22080 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022081 }
22082
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 return WDI_STATUS_SUCCESS;
22084}/*WDI_ClearPendingRequests*/
22085
22086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 @brief Helper routine used to init the BSS Sessions in the WDI control block
22088
22089
22090 @param pWDICtx: pointer to the WLAN DAL context
22091
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 @see
22093*/
22094void
22095WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022096(
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 WDI_ControlBlockType* pWDICtx
22098)
22099{
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22102
22103 /*-------------------------------------------------------------------------
22104 No Sanity check
22105 -------------------------------------------------------------------------*/
22106 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22107 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22110 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22111 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22112 }
22113}/*WDI_ResetAssocSessions*/
22114
22115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 @brief Helper routine used to find a session based on the BSSID
22117
22118
22119 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 pSession: pointer to the session (if found)
22122
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022125*/
22126wpt_uint8
22127WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022128(
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 WDI_ControlBlockType* pWDICtx,
22130 wpt_macAddr macBSSID,
22131 WDI_BSSSessionType** ppSession
22132)
22133{
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22136
22137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 -------------------------------------------------------------------------*/
22140 if ( NULL == ppSession )
22141 {
22142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022143 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 }
22146
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 /*------------------------------------------------------------------------
22150 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 ------------------------------------------------------------------------*/
22152 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22153 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022154 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22155 (eWLAN_PAL_TRUE ==
22156 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22157 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 {
22159 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 return i;
22162 }
22163 }
22164
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166}/*WDI_FindAssocSession*/
22167
22168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 @brief Helper routine used to find a session based on the BSSID
22170
22171
22172 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 ucBSSIdx: BSS Index of the session
22174 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022175
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022178*/
22179wpt_uint8
22180WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022181(
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 WDI_ControlBlockType* pWDICtx,
22183 wpt_uint16 ucBSSIdx,
22184 WDI_BSSSessionType** ppSession
22185)
22186{
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22189
22190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 -------------------------------------------------------------------------*/
22193 if ( NULL == ppSession )
22194 {
22195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022196 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 }
22199
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022201
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 /*------------------------------------------------------------------------
22203 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 ------------------------------------------------------------------------*/
22205 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22206 {
22207 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22208 {
22209 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 return i;
22212 }
22213 }
22214
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022216}/*WDI_FindAssocSessionByBSSIdx*/
22217
22218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 @brief Helper routine used to find a session based on the BSSID
22220
22221
22222 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 ucBSSIdx: BSS Index of the session
22224 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022225
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022228*/
22229wpt_uint8
22230WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022231(
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 WDI_ControlBlockType* pWDICtx,
22233 wpt_uint16 usIdx,
22234 WDI_BSSSessionType** ppSession
22235)
22236{
22237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22238
22239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 -------------------------------------------------------------------------*/
22242 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22243 {
22244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022245 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 }
22248
22249 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022251
22252 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022253
Jeff Johnson295189b2012-06-20 16:38:30 -070022254}/*WDI_FindAssocSessionByBSSIdx*/
22255
22256/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022259
22260
22261 @param pWDICtx: pointer to the WLAN DAL context
22262 pSession: pointer to the session (if found)
22263
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022266*/
22267wpt_uint8
22268WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022269(
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 WDI_ControlBlockType* pWDICtx,
22271 WDI_BSSSessionType** ppSession
22272)
22273{
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 -------------------------------------------------------------------------*/
22279 if ( NULL == ppSession )
22280 {
22281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022282 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 }
22285
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 /*------------------------------------------------------------------------
22289 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 ------------------------------------------------------------------------*/
22291 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22292 {
22293 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22294 {
22295 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022297 return i;
22298 }
22299 }
22300
Jeff Johnsone7245742012-09-05 17:12:55 -070022301 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022302}/*WDI_FindEmptySession*/
22303
22304
22305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022308
22309
22310 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022311 macBSSID: pointer to BSSID. If NULL, get all the session.
22312 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22313 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22314 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 @see
22316 @return Number of sessions in use
22317*/
22318wpt_uint8
22319WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022320(
Hoonki Lee26599972013-04-24 01:21:58 -070022321 WDI_ControlBlockType* pWDICtx,
22322 wpt_macAddr macBSSID,
22323 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022324)
22325{
Jeff Johnsone7245742012-09-05 17:12:55 -070022326 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022328
22329 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 Count all sessions in use
22331 ------------------------------------------------------------------------*/
22332 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22333 {
Hoonki Lee26599972013-04-24 01:21:58 -070022334 if ( macBSSID && skipBSSID &&
22335 (eWLAN_PAL_TRUE ==
22336 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22337 WDI_MAC_ADDR_LEN)))
22338 {
22339 continue;
22340 }
22341 else if ( pWDICtx->aBSSSessions[i].bInUse )
22342 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022344 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 }
22346
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022348}/*WDI_GetActiveSessionsCount*/
22349
22350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022353
22354
22355 @param pWDICtx: pointer to the WLAN DAL context
22356 pSession: pointer to the session (if found)
22357
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022361void
Jeff Johnson295189b2012-06-20 16:38:30 -070022362WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022363(
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 WDI_ControlBlockType* pWDICtx,
22365 WDI_BSSSessionType* ppSession
22366)
22367{
22368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 -------------------------------------------------------------------------*/
22371 if ( NULL == ppSession )
22372 {
22373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022374 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 }
22377
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 /*------------------------------------------------------------------------
22379 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 ------------------------------------------------------------------------*/
22381 wpal_list_destroy(&ppSession->wptPendingQueue);
22382 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022383 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22384 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22386 wpal_list_init(&ppSession->wptPendingQueue);
22387
22388}/*WDI_DeleteSession*/
22389
22390/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 @param
22394
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 WDI_AddStaParams: - pointer to the WDI Add STA params
22396 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022397
22398 @see
22399 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022400*/
22401void
22402WDI_AddBcastSTAtoSTATable
22403(
22404 WDI_ControlBlockType* pWDICtx,
22405 WDI_AddStaParams * staParams,
22406 wpt_uint16 usBcastStaIdx
22407)
22408{
22409 WDI_AddStaParams wdiAddSTAParam = {0};
22410 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22412
22413 /*---------------------------------------------------------------------
22414 Sanity check
22415 ---------------------------------------------------------------------*/
22416 if ( NULL == staParams )
22417 {
22418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022420
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 }
22423
22424 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22425 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22426 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22427 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22428 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22429 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22430 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22431 WDI_MAC_ADDR_LEN );
22432 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22433 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22434 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22435 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22436 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22437 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22438 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022439
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22441}
22442
22443/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 @brief NV blob will be divided into fragments of size 4kb and
22445 Sent to HAL
22446
22447 @param pWDICtx: pointer to the WLAN DAL context
22448 pEventData: pointer to the event information structure
22449
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 @see
22451 @return Result of the function call
22452 */
22453
22454WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022455(
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 WDI_ControlBlockType* pWDICtx,
22457 WDI_EventInfoType* pEventData
22458)
22459{
22460
22461 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22462 wpt_uint8* pSendBuffer = NULL;
22463 wpt_uint16 usDataOffset = 0;
22464 wpt_uint16 usSendSize = 0;
22465 wpt_uint16 usCurrentFragmentSize =0;
22466 wpt_uint8* pSrcBuffer = NULL;
22467 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22468 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22469
22470 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22471 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22472 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22473
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22476
22477 /* Update the current Fragment Number */
22478 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22479
22480 /*Update the HAL REQ structure */
22481 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22482 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22483 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22484
22485 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 image will be sent to HAL*/
22488
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22495 usCurrentFragmentSize = FRAGMENT_SIZE;
22496
22497 /*Update the HAL REQ structure */
22498 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22499 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22500
22501 }
22502 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 usCurrentFragmentSize = FRAGMENT_SIZE;
22505
22506 /*Update the HAL REQ structure */
22507 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22508 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22509 }
22510
22511 /*-----------------------------------------------------------------------
22512 Get message buffer
22513 -----------------------------------------------------------------------*/
22514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22515 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22516 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22519 {
22520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022521 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 pEventData, pwdiNvDownloadReqParams);
22523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 }
22526
22527 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22530
22531 /* Appending the NV image fragment */
22532 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22533 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22534 usCurrentFragmentSize);
22535
22536 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022538
Jeff Johnsone7245742012-09-05 17:12:55 -070022539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22540 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 WDI_NV_DOWNLOAD_RESP);
22542
22543}
Jeff Johnsone7245742012-09-05 17:12:55 -070022544/*============================================================================
22545 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 ============================================================================*/
22547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 @brief Helper routine used to find a session based on the BSSID
22549 @param pContext: pointer to the WLAN DAL context
22550 @param pDPContext: pointer to the Datapath context
22551
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022554*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022555WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022556WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22557{
22558 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22559
22560 pCB->pDPContext = pDPContext;
22561 return;
22562}
22563
22564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 @brief Helper routine used to find a session based on the BSSID
22566
22567
22568 @param pContext: pointer to the WLAN DAL context
22569
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 @see
22571 @return pointer to Datapath context
22572*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022573WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022574WDI_DS_GetDatapathContext (void *pContext)
22575{
22576 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22577 return pCB->pDPContext;
22578}
22579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 @brief Helper routine used to find a session based on the BSSID
22581
22582
22583 @param pContext: pointer to the WLAN DAL context
22584 @param pDTDriverContext: pointer to the Transport Driver context
22585
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 @see
22587 @return void
22588*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022590WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22591{
22592 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22593
22594 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022596}
22597
22598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 @brief Helper routine used to find a session based on the BSSID
22600
22601
22602 @param pWDICtx: pointer to the WLAN DAL context
22603
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022606*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022607WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022608WDT_GetTransportDriverContext (void *pContext)
22609{
22610 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022612}
22613
Jeff Johnsone7245742012-09-05 17:12:55 -070022614/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 Helper inline converters
22616 ============================================================================*/
22617/*Convert WDI driver type into HAL driver type*/
22618WPT_STATIC WPT_INLINE WDI_Status
22619WDI_HAL_2_WDI_STATUS
22620(
22621 eHalStatus halStatus
22622)
22623{
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 the chances of getting inlined*/
22626 switch( halStatus )
22627 {
22628 case eHAL_STATUS_SUCCESS:
22629 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22630 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22631 return WDI_STATUS_SUCCESS;
22632 case eHAL_STATUS_FAILURE:
22633 return WDI_STATUS_E_FAILURE;
22634 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 return WDI_STATUS_MEM_FAILURE;
22636 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 default:
22639 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22640 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022641
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022643}/*WDI_HAL_2_WDI_STATUS*/
22644
22645/*Convert WDI request type into HAL request type*/
22646WPT_STATIC WPT_INLINE tHalHostMsgType
22647WDI_2_HAL_REQ_TYPE
22648(
22649 WDI_RequestEnumType wdiReqType
22650)
22651{
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 the chances of getting inlined*/
22654 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022676 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022683 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 return WLAN_HAL_RMV_STAKEY_REQ;
22691 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 case WDI_DEL_BA_REQ:
22700 return WLAN_HAL_DEL_BA_REQ;
22701#ifdef FEATURE_WLAN_CCX
22702 case WDI_TSM_STATS_REQ:
22703 return WLAN_HAL_TSM_STATS_REQ;
22704#endif
22705 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 case WDI_ADD_BA_SESSION_REQ:
22716 return WLAN_HAL_ADD_BA_SESSION_REQ;
22717 case WDI_TRIGGER_BA_REQ:
22718 return WLAN_HAL_TRIGGER_BA_REQ;
22719 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22724 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22725 case WDI_SET_MAX_TX_POWER_REQ:
22726 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022727 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22728 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022729 case WDI_SET_TX_POWER_REQ:
22730 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22732 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022733#ifdef FEATURE_WLAN_TDLS
22734 case WDI_TDLS_LINK_ESTABLISH_REQ:
22735 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22736#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 case WDI_REM_BEACON_FILTER_REQ:
22758 return WLAN_HAL_REM_BCN_FILTER_REQ;
22759 case WDI_SET_RSSI_THRESHOLDS_REQ:
22760 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22761 case WDI_HOST_OFFLOAD_REQ:
22762 return WLAN_HAL_HOST_OFFLOAD_REQ;
22763 case WDI_WOWL_ADD_BC_PTRN_REQ:
22764 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22765 case WDI_WOWL_DEL_BC_PTRN_REQ:
22766 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22767 case WDI_WOWL_ENTER_REQ:
22768 return WLAN_HAL_ENTER_WOWL_REQ;
22769 case WDI_WOWL_EXIT_REQ:
22770 return WLAN_HAL_EXIT_WOWL_REQ;
22771 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22772 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22773 case WDI_NV_DOWNLOAD_REQ:
22774 return WLAN_HAL_DOWNLOAD_NV_REQ;
22775 case WDI_FLUSH_AC_REQ:
22776 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22777 case WDI_BTAMP_EVENT_REQ:
22778 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22779#ifdef WLAN_FEATURE_VOWIFI_11R
22780 case WDI_AGGR_ADD_TS_REQ:
22781 return WLAN_HAL_AGGR_ADD_TS_REQ;
22782#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 case WDI_FTM_CMD_REQ:
22784 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 case WDI_ADD_STA_SELF_REQ:
22786 return WLAN_HAL_ADD_STA_SELF_REQ;
22787 case WDI_DEL_STA_SELF_REQ:
22788 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022789#ifdef FEATURE_OEM_DATA_SUPPORT
22790 case WDI_START_OEM_DATA_REQ:
22791 return WLAN_HAL_START_OEM_DATA_REQ;
22792#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 case WDI_HOST_RESUME_REQ:
22794 return WLAN_HAL_HOST_RESUME_REQ;
22795 case WDI_HOST_SUSPEND_IND:
22796 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022797 case WDI_TRAFFIC_STATS_IND:
22798 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022799#ifdef WLAN_FEATURE_11W
22800 case WDI_EXCLUDE_UNENCRYPTED_IND:
22801 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22802#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 case WDI_KEEP_ALIVE_REQ:
22804 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022805#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022806 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22807 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022808#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022809#ifdef FEATURE_WLAN_SCAN_PNO
22810 case WDI_SET_PREF_NETWORK_REQ:
22811 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22812 case WDI_SET_RSSI_FILTER_REQ:
22813 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22814 case WDI_UPDATE_SCAN_PARAMS_REQ:
22815 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22816#endif // FEATURE_WLAN_SCAN_PNO
22817 case WDI_SET_TX_PER_TRACKING_REQ:
22818 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22819#ifdef WLAN_FEATURE_PACKET_FILTERING
22820 case WDI_8023_MULTICAST_LIST_REQ:
22821 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22822 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22825 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22826 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22827 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22828#endif // WLAN_FEATURE_PACKET_FILTERING
22829 case WDI_HAL_DUMP_CMD_REQ:
22830 return WLAN_HAL_DUMP_COMMAND_REQ;
22831#ifdef WLAN_FEATURE_GTK_OFFLOAD
22832 case WDI_GTK_OFFLOAD_REQ:
22833 return WLAN_HAL_GTK_OFFLOAD_REQ;
22834 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22835 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22836#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22837
22838 case WDI_INIT_SCAN_CON_REQ:
22839 return WLAN_HAL_INIT_SCAN_CON_REQ;
22840 case WDI_SET_POWER_PARAMS_REQ:
22841 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22842 case WDI_SET_TM_LEVEL_REQ:
22843 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22844 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22845 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022846#ifdef WLAN_FEATURE_11AC
22847 case WDI_UPDATE_VHT_OP_MODE_REQ:
22848 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22849#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022850 case WDI_GET_ROAM_RSSI_REQ:
22851 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022852 case WDI_DHCP_START_IND:
22853 return WLAN_HAL_DHCP_START_IND;
22854 case WDI_DHCP_STOP_IND:
22855 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022856#ifdef FEATURE_WLAN_LPHB
22857 case WDI_LPHB_CFG_REQ:
22858 return WLAN_HAL_LPHB_CFG_REQ;
22859#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022860 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22861 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22862 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22863 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22864
Rajeev3db91f12013-10-05 11:03:42 +053022865#ifdef FEATURE_WLAN_BATCH_SCAN
22866 case WDI_SET_BATCH_SCAN_REQ:
22867 return WLAN_HAL_BATCHSCAN_SET_REQ;
22868 case WDI_STOP_BATCH_SCAN_IND:
22869 return WLAN_HAL_BATCHSCAN_STOP_IND;
22870 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22871 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22872#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022873 case WDI_RATE_UPDATE_IND:
22874 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022875
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022879
Jeff Johnson295189b2012-06-20 16:38:30 -070022880}/*WDI_2_HAL_REQ_TYPE*/
22881
22882/*Convert WDI response type into HAL response type*/
22883WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22884HAL_2_WDI_RSP_TYPE
22885(
22886 tHalHostMsgType halMsg
22887)
22888{
Jeff Johnsone7245742012-09-05 17:12:55 -070022889 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 the chances of getting inlined*/
22891 switch( halMsg )
22892 {
22893 case WLAN_HAL_START_RSP:
22894 return WDI_START_RESP;
22895 case WLAN_HAL_STOP_RSP:
22896 return WDI_STOP_RESP;
22897 case WLAN_HAL_INIT_SCAN_RSP:
22898 return WDI_INIT_SCAN_RESP;
22899 case WLAN_HAL_START_SCAN_RSP:
22900 return WDI_START_SCAN_RESP;
22901 case WLAN_HAL_END_SCAN_RSP:
22902 return WDI_END_SCAN_RESP;
22903 case WLAN_HAL_FINISH_SCAN_RSP:
22904 return WDI_FINISH_SCAN_RESP;
22905 case WLAN_HAL_CONFIG_STA_RSP:
22906 return WDI_CONFIG_STA_RESP;
22907 case WLAN_HAL_DELETE_STA_RSP:
22908 return WDI_DEL_STA_RESP;
22909 case WLAN_HAL_CONFIG_BSS_RSP:
22910 return WDI_CONFIG_BSS_RESP;
22911 case WLAN_HAL_DELETE_BSS_RSP:
22912 return WDI_DEL_BSS_RESP;
22913 case WLAN_HAL_JOIN_RSP:
22914 return WDI_JOIN_RESP;
22915 case WLAN_HAL_POST_ASSOC_RSP:
22916 return WDI_POST_ASSOC_RESP;
22917 case WLAN_HAL_SET_BSSKEY_RSP:
22918 return WDI_SET_BSS_KEY_RESP;
22919 case WLAN_HAL_SET_STAKEY_RSP:
22920 return WDI_SET_STA_KEY_RESP;
22921 case WLAN_HAL_RMV_BSSKEY_RSP:
22922 return WDI_RMV_BSS_KEY_RESP;
22923 case WLAN_HAL_RMV_STAKEY_RSP:
22924 return WDI_RMV_STA_KEY_RESP;
22925 case WLAN_HAL_SET_BCASTKEY_RSP:
22926 return WDI_SET_STA_BCAST_KEY_RESP;
22927 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22928 // return WDI_RMV_STA_BCAST_KEY_RESP;
22929 case WLAN_HAL_ADD_TS_RSP:
22930 return WDI_ADD_TS_RESP;
22931 case WLAN_HAL_DEL_TS_RSP:
22932 return WDI_DEL_TS_RESP;
22933 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22934 return WDI_UPD_EDCA_PRMS_RESP;
22935 case WLAN_HAL_ADD_BA_RSP:
22936 return WDI_ADD_BA_RESP;
22937 case WLAN_HAL_DEL_BA_RSP:
22938 return WDI_DEL_BA_RESP;
22939#ifdef FEATURE_WLAN_CCX
22940 case WLAN_HAL_TSM_STATS_RSP:
22941 return WDI_TSM_STATS_RESP;
22942#endif
22943 case WLAN_HAL_CH_SWITCH_RSP:
22944 return WDI_CH_SWITCH_RESP;
22945 case WLAN_HAL_SET_LINK_ST_RSP:
22946 return WDI_SET_LINK_ST_RESP;
22947 case WLAN_HAL_GET_STATS_RSP:
22948 return WDI_GET_STATS_RESP;
22949 case WLAN_HAL_UPDATE_CFG_RSP:
22950 return WDI_UPDATE_CFG_RESP;
22951 case WLAN_HAL_ADD_BA_SESSION_RSP:
22952 return WDI_ADD_BA_SESSION_RESP;
22953 case WLAN_HAL_TRIGGER_BA_RSP:
22954 return WDI_TRIGGER_BA_RESP;
22955 case WLAN_HAL_UPDATE_BEACON_RSP:
22956 return WDI_UPD_BCON_PRMS_RESP;
22957 case WLAN_HAL_SEND_BEACON_RSP:
22958 return WDI_SND_BCON_RESP;
22959 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22960 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22961 /*Indications*/
22962 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22963 return WDI_HAL_RSSI_NOTIFICATION_IND;
22964 case WLAN_HAL_MISSED_BEACON_IND:
22965 return WDI_HAL_MISSED_BEACON_IND;
22966 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22967 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22968 case WLAN_HAL_MIC_FAILURE_IND:
22969 return WDI_HAL_MIC_FAILURE_IND;
22970 case WLAN_HAL_FATAL_ERROR_IND:
22971 return WDI_HAL_FATAL_ERROR_IND;
22972 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22973 return WDI_HAL_DEL_STA_IND;
22974 case WLAN_HAL_COEX_IND:
22975 return WDI_HAL_COEX_IND;
22976 case WLAN_HAL_OTA_TX_COMPL_IND:
22977 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 case WLAN_HAL_P2P_NOA_ATTR_IND:
22979 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022980 case WLAN_HAL_P2P_NOA_START_IND:
22981 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 case WLAN_HAL_TX_PER_HIT_IND:
22983 return WDI_HAL_TX_PER_HIT_IND;
22984 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22985 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070022986 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
22987 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070022988 case WLAN_HAL_SET_TX_POWER_RSP:
22989 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 case WLAN_HAL_SET_P2P_GONOA_RSP:
22991 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022992#ifdef FEATURE_WLAN_TDLS
22993 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22994 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22995 case WLAN_HAL_TDLS_IND:
22996 return WDI_HAL_TDLS_IND;
22997#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023011 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023012 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23017 return WDI_SET_BEACON_FILTER_RESP;
23018 case WLAN_HAL_REM_BCN_FILTER_RSP:
23019 return WDI_REM_BEACON_FILTER_RESP;
23020 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23021 return WDI_SET_RSSI_THRESHOLDS_RESP;
23022 case WLAN_HAL_HOST_OFFLOAD_RSP:
23023 return WDI_HOST_OFFLOAD_RESP;
23024 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23025 return WDI_WOWL_ADD_BC_PTRN_RESP;
23026 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23027 return WDI_WOWL_DEL_BC_PTRN_RESP;
23028 case WLAN_HAL_ENTER_WOWL_RSP:
23029 return WDI_WOWL_ENTER_RESP;
23030 case WLAN_HAL_EXIT_WOWL_RSP:
23031 return WDI_WOWL_EXIT_RESP;
23032 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23033 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23034 case WLAN_HAL_DOWNLOAD_NV_RSP:
23035 return WDI_NV_DOWNLOAD_RESP;
23036 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23037 return WDI_FLUSH_AC_RESP;
23038 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23039 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 case WLAN_HAL_PROCESS_PTT_RSP:
23041 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023042 case WLAN_HAL_ADD_STA_SELF_RSP:
23043 return WDI_ADD_STA_SELF_RESP;
23044case WLAN_HAL_DEL_STA_SELF_RSP:
23045 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023046#ifdef FEATURE_OEM_DATA_SUPPORT
23047 case WLAN_HAL_START_OEM_DATA_RSP:
23048 return WDI_START_OEM_DATA_RESP;
23049#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 case WLAN_HAL_HOST_RESUME_RSP:
23051 return WDI_HOST_RESUME_RESP;
23052 case WLAN_HAL_KEEP_ALIVE_RSP:
23053 return WDI_KEEP_ALIVE_RESP;
23054#ifdef FEATURE_WLAN_SCAN_PNO
23055 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23056 return WDI_SET_PREF_NETWORK_RESP;
23057 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23060 return WDI_UPDATE_SCAN_PARAMS_RESP;
23061 case WLAN_HAL_PREF_NETW_FOUND_IND:
23062 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23063#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023064#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023065 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23066 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023067#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23069 return WDI_SET_TX_PER_TRACKING_RESP;
23070#ifdef WLAN_FEATURE_PACKET_FILTERING
23071 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23072 return WDI_8023_MULTICAST_LIST_RESP;
23073 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23074 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23075 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23076 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23077 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23078 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23079#endif // WLAN_FEATURE_PACKET_FILTERING
23080
23081 case WLAN_HAL_DUMP_COMMAND_RSP:
23082 return WDI_HAL_DUMP_CMD_RESP;
23083 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23084 return WDI_SET_POWER_PARAMS_RESP;
23085#ifdef WLAN_FEATURE_VOWIFI_11R
23086 case WLAN_HAL_AGGR_ADD_TS_RSP:
23087 return WDI_AGGR_ADD_TS_RESP;
23088#endif
23089
23090#ifdef WLAN_FEATURE_GTK_OFFLOAD
23091 case WLAN_HAL_GTK_OFFLOAD_RSP:
23092 return WDI_GTK_OFFLOAD_RESP;
23093 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23094 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23095#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23096#ifdef WLAN_WAKEUP_EVENTS
23097 case WLAN_HAL_WAKE_REASON_IND:
23098 return WDI_HAL_WAKE_REASON_IND;
23099#endif // WLAN_WAKEUP_EVENTS
23100
23101 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23102 return WDI_SET_TM_LEVEL_RESP;
23103 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23104 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023105#ifdef WLAN_FEATURE_11AC
23106 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23107 return WDI_UPDATE_VHT_OP_MODE_RESP;
23108#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023109#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23110 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23111 return WDI_GET_ROAM_RSSI_RESP;
23112#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023113
Leo Chang00bc9132013-08-01 19:21:11 -070023114#ifdef FEATURE_WLAN_LPHB
23115 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023116 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023117 case WLAN_HAL_LPHB_CFG_RSP:
23118 return WDI_LPHB_CFG_RESP;
23119#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023120
23121 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23122 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023123 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23124 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023125
Rajeev3db91f12013-10-05 11:03:42 +053023126#ifdef FEATURE_WLAN_BATCH_SCAN
23127 case WLAN_HAL_BATCHSCAN_SET_RSP:
23128 return WDI_SET_BATCH_SCAN_RESP;
23129 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23130 return WDI_BATCHSCAN_RESULT_IND;
23131#endif // FEATURE_WLAN_BATCH_SCAN
23132
Leo Changd95d6622013-12-15 15:18:55 -080023133#ifdef FEATURE_WLAN_CH_AVOID
23134 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23135 return WDI_HAL_CH_AVOID_IND;
23136#endif /* FEATURE_WLAN_CH_AVOID */
23137
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 }
23141
23142}/*HAL_2_WDI_RSP_TYPE*/
23143
23144
23145/*Convert WDI driver type into HAL driver type*/
23146WPT_STATIC WPT_INLINE tDriverType
23147WDI_2_HAL_DRV_TYPE
23148(
23149 WDI_DriverType wdiDriverType
23150)
23151{
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 the chances of getting inlined*/
23154 switch( wdiDriverType )
23155 {
23156 case WDI_DRIVER_TYPE_PRODUCTION:
23157 return eDRIVER_TYPE_PRODUCTION;
23158 case WDI_DRIVER_TYPE_MFG:
23159 return eDRIVER_TYPE_MFG;
23160 case WDI_DRIVER_TYPE_DVT:
23161 return eDRIVER_TYPE_DVT;
23162 }
23163
Jeff Johnsone7245742012-09-05 17:12:55 -070023164 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023165}/*WDI_2_HAL_DRV_TYPE*/
23166
23167
23168/*Convert WDI stop reason into HAL stop reason*/
23169WPT_STATIC WPT_INLINE tHalStopType
23170WDI_2_HAL_STOP_REASON
23171(
23172 WDI_StopType wdiDriverType
23173)
23174{
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 the chances of getting inlined*/
23177 switch( wdiDriverType )
23178 {
23179 case WDI_STOP_TYPE_SYS_RESET:
23180 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023181 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23182 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 case WDI_STOP_TYPE_RF_KILL:
23184 return HAL_STOP_TYPE_RF_KILL;
23185 }
23186
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023188}/*WDI_2_HAL_STOP_REASON*/
23189
23190
23191/*Convert WDI scan mode type into HAL scan mode type*/
23192WPT_STATIC WPT_INLINE eHalSysMode
23193WDI_2_HAL_SCAN_MODE
23194(
23195 WDI_ScanMode wdiScanMode
23196)
23197{
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 the chances of getting inlined*/
23200 switch( wdiScanMode )
23201 {
23202 case WDI_SCAN_MODE_NORMAL:
23203 return eHAL_SYS_MODE_NORMAL;
23204 case WDI_SCAN_MODE_LEARN:
23205 return eHAL_SYS_MODE_LEARN;
23206 case WDI_SCAN_MODE_SCAN:
23207 return eHAL_SYS_MODE_SCAN;
23208 case WDI_SCAN_MODE_PROMISC:
23209 return eHAL_SYS_MODE_PROMISC;
23210 case WDI_SCAN_MODE_SUSPEND_LINK:
23211 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023212 case WDI_SCAN_MODE_ROAM_SCAN:
23213 return eHAL_SYS_MODE_ROAM_SCAN;
23214 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23215 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 }
23217
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023219}/*WDI_2_HAL_SCAN_MODE*/
23220
23221/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023222WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023223WDI_2_HAL_SEC_CH_OFFSET
23224(
23225 WDI_HTSecondaryChannelOffset wdiSecChOffset
23226)
23227{
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 the chances of getting inlined*/
23230 switch( wdiSecChOffset )
23231 {
23232 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23238#ifdef WLAN_FEATURE_11AC
23239 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23240 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23241 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23242 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23243 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23244 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23245 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23246 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23247 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23248 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23249 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23250 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23251 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23252 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23253#endif
23254 default:
23255 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 }
23257
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259}/*WDI_2_HAL_SEC_CH_OFFSET*/
23260
23261/*Convert WDI BSS type into HAL BSS type*/
23262WPT_STATIC WPT_INLINE tSirBssType
23263WDI_2_HAL_BSS_TYPE
23264(
23265 WDI_BssType wdiBSSType
23266)
23267{
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 the chances of getting inlined*/
23270 switch( wdiBSSType )
23271 {
23272 case WDI_INFRASTRUCTURE_MODE:
23273 return eSIR_INFRASTRUCTURE_MODE;
23274 case WDI_INFRA_AP_MODE:
23275 return eSIR_INFRA_AP_MODE;
23276 case WDI_IBSS_MODE:
23277 return eSIR_IBSS_MODE;
23278 case WDI_BTAMP_STA_MODE:
23279 return eSIR_BTAMP_STA_MODE;
23280 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 case WDI_BSS_AUTO_MODE:
23283 return eSIR_AUTO_MODE;
23284 }
23285
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023287}/*WDI_2_HAL_BSS_TYPE*/
23288
23289/*Convert WDI NW type into HAL NW type*/
23290WPT_STATIC WPT_INLINE tSirNwType
23291WDI_2_HAL_NW_TYPE
23292(
23293 WDI_NwType wdiNWType
23294)
23295{
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 the chances of getting inlined*/
23298 switch( wdiNWType )
23299 {
23300 case WDI_11A_NW_TYPE:
23301 return eSIR_11A_NW_TYPE;
23302 case WDI_11B_NW_TYPE:
23303 return eSIR_11B_NW_TYPE;
23304 case WDI_11G_NW_TYPE:
23305 return eSIR_11G_NW_TYPE;
23306 case WDI_11N_NW_TYPE:
23307 return eSIR_11N_NW_TYPE;
23308 }
23309
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311}/*WDI_2_HAL_NW_TYPE*/
23312
23313/*Convert WDI chanel bonding type into HAL cb type*/
23314WPT_STATIC WPT_INLINE ePhyChanBondState
23315WDI_2_HAL_CB_STATE
23316(
23317 WDI_PhyChanBondState wdiCbState
23318)
23319{
Jeff Johnsone7245742012-09-05 17:12:55 -070023320 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 the chances of getting inlined*/
23322 switch ( wdiCbState )
23323 {
23324 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23325 return PHY_SINGLE_CHANNEL_CENTERED;
23326 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23327 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23328 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23329 return PHY_DOUBLE_CHANNEL_CENTERED;
23330 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23331 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023332#ifdef WLAN_FEATURE_11AC
23333 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23334 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23335 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23336 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23337 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23338 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23339 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23340 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23341 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23342 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23343 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23344 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23345 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23346 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23347#endif
23348 case WDI_MAX_CB_STATE:
23349 default:
23350 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023352
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 return PHY_CHANNEL_BONDING_STATE_MAX;
23354}/*WDI_2_HAL_CB_STATE*/
23355
23356/*Convert WDI chanel bonding type into HAL cb type*/
23357WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23358WDI_2_HAL_HT_OPER_MODE
23359(
23360 WDI_HTOperatingMode wdiHTOperMode
23361)
23362{
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 the chances of getting inlined*/
23365 switch ( wdiHTOperMode )
23366 {
23367 case WDI_HT_OP_MODE_PURE:
23368 return eSIR_HT_OP_MODE_PURE;
23369 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23370 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23371 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23372 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23373 case WDI_HT_OP_MODE_MIXED:
23374 return eSIR_HT_OP_MODE_MIXED;
23375 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023376
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 return eSIR_HT_OP_MODE_MAX;
23378}/*WDI_2_HAL_HT_OPER_MODE*/
23379
23380/*Convert WDI mimo PS type into HAL mimo PS type*/
23381WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23382WDI_2_HAL_MIMO_PS
23383(
23384 WDI_HTMIMOPowerSaveState wdiHTOperMode
23385)
23386{
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 the chances of getting inlined*/
23389 switch ( wdiHTOperMode )
23390 {
23391 case WDI_HT_MIMO_PS_STATIC:
23392 return eSIR_HT_MIMO_PS_STATIC;
23393 case WDI_HT_MIMO_PS_DYNAMIC:
23394 return eSIR_HT_MIMO_PS_DYNAMIC;
23395 case WDI_HT_MIMO_PS_NA:
23396 return eSIR_HT_MIMO_PS_NA;
23397 case WDI_HT_MIMO_PS_NO_LIMIT:
23398 return eSIR_HT_MIMO_PS_NO_LIMIT;
23399 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023400
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 return eSIR_HT_MIMO_PS_MAX;
23402}/*WDI_2_HAL_MIMO_PS*/
23403
23404/*Convert WDI ENC type into HAL ENC type*/
23405WPT_STATIC WPT_INLINE tAniEdType
23406WDI_2_HAL_ENC_TYPE
23407(
23408 WDI_EncryptType wdiEncType
23409)
23410{
Jeff Johnsone7245742012-09-05 17:12:55 -070023411 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023412 the chances of getting inlined*/
23413 switch ( wdiEncType )
23414 {
23415 case WDI_ENCR_NONE:
23416 return eSIR_ED_NONE;
23417
23418 case WDI_ENCR_WEP40:
23419 return eSIR_ED_WEP40;
23420
23421 case WDI_ENCR_WEP104:
23422 return eSIR_ED_WEP104;
23423
23424 case WDI_ENCR_TKIP:
23425 return eSIR_ED_TKIP;
23426
23427 case WDI_ENCR_CCMP:
23428 return eSIR_ED_CCMP;
23429
23430 case WDI_ENCR_AES_128_CMAC:
23431 return eSIR_ED_AES_128_CMAC;
23432#if defined(FEATURE_WLAN_WAPI)
23433 case WDI_ENCR_WPI:
23434 return eSIR_ED_WPI;
23435#endif
23436 default:
23437 return eSIR_ED_NOT_IMPLEMENTED;
23438 }
23439
23440}/*WDI_2_HAL_ENC_TYPE*/
23441
23442/*Convert WDI WEP type into HAL WEP type*/
23443WPT_STATIC WPT_INLINE tAniWepType
23444WDI_2_HAL_WEP_TYPE
23445(
23446 WDI_WepType wdiWEPType
23447)
23448{
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 the chances of getting inlined*/
23451 switch ( wdiWEPType )
23452 {
23453 case WDI_WEP_STATIC:
23454 return eSIR_WEP_STATIC;
23455
23456 case WDI_WEP_DYNAMIC:
23457 return eSIR_WEP_DYNAMIC;
23458 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023459
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 return eSIR_WEP_MAX;
23461}/*WDI_2_HAL_WEP_TYPE*/
23462
23463WPT_STATIC WPT_INLINE tSirLinkState
23464WDI_2_HAL_LINK_STATE
23465(
23466 WDI_LinkStateType wdiLinkState
23467)
23468{
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 the chances of getting inlined*/
23471 switch ( wdiLinkState )
23472 {
23473 case WDI_LINK_IDLE_STATE:
23474 return eSIR_LINK_IDLE_STATE;
23475
23476 case WDI_LINK_PREASSOC_STATE:
23477 return eSIR_LINK_PREASSOC_STATE;
23478
23479 case WDI_LINK_POSTASSOC_STATE:
23480 return eSIR_LINK_POSTASSOC_STATE;
23481
23482 case WDI_LINK_AP_STATE:
23483 return eSIR_LINK_AP_STATE;
23484
23485 case WDI_LINK_IBSS_STATE:
23486 return eSIR_LINK_IBSS_STATE;
23487
23488 case WDI_LINK_BTAMP_PREASSOC_STATE:
23489 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23490
23491 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23492 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23493
23494 case WDI_LINK_BTAMP_AP_STATE:
23495 return eSIR_LINK_BTAMP_AP_STATE;
23496
23497 case WDI_LINK_BTAMP_STA_STATE:
23498 return eSIR_LINK_BTAMP_STA_STATE;
23499
23500 case WDI_LINK_LEARN_STATE:
23501 return eSIR_LINK_LEARN_STATE;
23502
23503 case WDI_LINK_SCAN_STATE:
23504 return eSIR_LINK_SCAN_STATE;
23505
23506 case WDI_LINK_FINISH_SCAN_STATE:
23507 return eSIR_LINK_FINISH_SCAN_STATE;
23508
23509 case WDI_LINK_INIT_CAL_STATE:
23510 return eSIR_LINK_INIT_CAL_STATE;
23511
23512 case WDI_LINK_FINISH_CAL_STATE:
23513 return eSIR_LINK_FINISH_CAL_STATE;
23514
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 case WDI_LINK_LISTEN_STATE:
23516 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023517
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023518 case WDI_LINK_SEND_ACTION_STATE:
23519 return eSIR_LINK_SEND_ACTION_STATE;
23520
Jeff Johnson295189b2012-06-20 16:38:30 -070023521 default:
23522 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023524}
23525
Jeff Johnsone7245742012-09-05 17:12:55 -070023526/*Translate a STA Context from WDI into HAL*/
23527WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023528void
23529WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023530(
Jeff Johnson295189b2012-06-20 16:38:30 -070023531 tConfigStaParams* phalConfigSta,
23532 WDI_ConfigStaReqInfoType* pwdiConfigSta
23533)
23534{
23535 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023536#ifdef WLAN_FEATURE_11AC
23537 /* Get the Version 1 Handler */
23538 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23539 if (WDI_getFwWlanFeatCaps(DOT11AC))
23540 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023541 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 }
23543#endif
23544 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 the chances of getting inlined*/
23546
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 wpalMemoryCopy(phalConfigSta->bssId,
23548 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23549
23550 wpalMemoryCopy(phalConfigSta->staMac,
23551 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023552
23553 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23554 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23555 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23556 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23557 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23558 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23559 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23560 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23561 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23562 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23563 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23564 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23565 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23566 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23567 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23568 phalConfigSta->action = pwdiConfigSta->wdiAction;
23569 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23570 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23571 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23572 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23573 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23574 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23575 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023576
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23578
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 pwdiConfigSta->wdiSupportedRates.opRateMode;
23581 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23582 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23585 }
23586 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23587 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23590 }
23591 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23592 {
23593 phalConfigSta->supportedRates.aniLegacyRates[i] =
23594 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23595 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23598 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23599 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023601 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23602 }
23603 phalConfigSta->supportedRates.rxHighestDataRate =
23604 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23605
Jeff Johnsone7245742012-09-05 17:12:55 -070023606#ifdef WLAN_FEATURE_11AC
23607 if(phalConfigSta_V1 != NULL)
23608 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023609 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23610 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23611 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23612 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 }
23614#endif
23615
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023617
Jeff Johnsone7245742012-09-05 17:12:55 -070023618#ifdef WLAN_FEATURE_11AC
23619 if(phalConfigSta_V1 != NULL)
23620 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023621 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23622 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023623 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023624 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23625 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23626
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 }
23628#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023629}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023630
23631/*Translate a Rate set info from WDI into HAL*/
23632WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023633WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023634(
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 tSirMacRateSet* pHalRateSet,
23636 WDI_RateSet* pwdiRateSet
23637)
23638{
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23641
23642 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23643 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23644
23645 for ( i = 0; i < pHalRateSet->numRates; i++ )
23646 {
23647 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23648 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023649
Jeff Johnson295189b2012-06-20 16:38:30 -070023650}/*WDI_CopyWDIRateSetToHALRateSet*/
23651
23652
23653/*Translate an EDCA Parameter Record from WDI into HAL*/
23654WPT_STATIC WPT_INLINE void
23655WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023656(
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 tSirMacEdcaParamRecord* phalEdcaParam,
23658 WDI_EdcaParamRecord* pWDIEdcaParam
23659)
23660{
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 the chances of getting inlined*/
23663
23664 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23665 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23666 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23667 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23668
23669 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23670 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23671 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23672}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23673
23674
23675/*Copy a management frame header from WDI fmt into HAL fmt*/
23676WPT_STATIC WPT_INLINE void
23677WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23678(
23679 tSirMacMgmtHdr* pmacMgmtHdr,
23680 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23681)
23682{
23683 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23684 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23685 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23686 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23687 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23688 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23689 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23690 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23691 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23692 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23693 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23694
23695 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23696 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23697
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 pwdiMacMgmtHdr->bssId, 6);
23704
23705 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23706 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23707 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23708
23709}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23710
23711
23712/*Copy config bss parameters from WDI fmt into HAL fmt*/
23713WPT_STATIC WPT_INLINE void
23714WDI_CopyWDIConfigBSSToHALConfigBSS
23715(
23716 tConfigBssParams* phalConfigBSS,
23717 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23718)
23719{
23720
23721 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023722#ifdef WLAN_FEATURE_11AC
23723 /* Get the Version 1 Handler */
23724 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23725 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023726 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023727#endif
23728
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 wpalMemoryCopy( phalConfigBSS->bssId,
23730 pwdiConfigBSS->macBSSID,
23731 WDI_MAC_ADDR_LEN);
23732
23733#ifdef HAL_SELF_STA_PER_BSS
23734 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23735 pwdiConfigBSS->macSelfAddr,
23736 WDI_MAC_ADDR_LEN);
23737#endif
23738
23739 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23740
23741 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23742 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23743
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 pwdiConfigBSS->ucShortSlotTimeSupported;
23746 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23747 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23748 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23749 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23750 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23753 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23754 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23755 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23756 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23757 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23758 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23759 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23760 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23761 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23762 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23763
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 phalConfigBSS->htOperMode =
23765 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023766
23767 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23768 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23769 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23770 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23771
23772#ifdef WLAN_FEATURE_VOWIFI
23773 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23774#endif
23775
23776 /*! Used 32 as magic number because that is how the ssid is declared inside the
23777 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023778 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23780 pwdiConfigBSS->wdiSSID.ucLength : 32;
23781 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 pwdiConfigBSS->wdiSSID.sSSID,
23783 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023784
23785 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23786 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023787
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23789 &pwdiConfigBSS->wdiRateSet);
23790
23791 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23792
23793 if(phalConfigBSS->edcaParamsValid)
23794 {
23795 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23796 &pwdiConfigBSS->wdiBEEDCAParams);
23797 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23798 &pwdiConfigBSS->wdiBKEDCAParams);
23799 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23800 &pwdiConfigBSS->wdiVIEDCAParams);
23801 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23802 &pwdiConfigBSS->wdiVOEDCAParams);
23803 }
23804
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806
23807 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23808
23809#ifdef WLAN_FEATURE_VOWIFI_11R
23810
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023813
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 if( phalConfigBSS->extSetStaKeyParamValid )
23815 {
23816 /*-----------------------------------------------------------------------
23817 Copy the STA Key parameters into the HAL message
23818 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23821
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23824
23825 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23826
23827 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23828
23829 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23830
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23832 keyIndex++)
23833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023835 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23836 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23837 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23838 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23839 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23840 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023843 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23847 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 WDI_MAX_KEY_LENGTH);
23850 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 }
23852 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23853 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 sizeof(phalConfigBSS->extSetStaKeyParam) );
23856 }
23857
23858#endif /*WLAN_FEATURE_VOWIFI_11R*/
23859
Jeff Johnsone7245742012-09-05 17:12:55 -070023860#ifdef WLAN_FEATURE_11AC
23861 if(phalConfigBSS_V1 != NULL)
23862 {
23863 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23864 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23865 }
23866#endif
23867
Jeff Johnson295189b2012-06-20 16:38:30 -070023868}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23869
23870
Jeff Johnsone7245742012-09-05 17:12:55 -070023871/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 pointed to by user data */
23873WPT_STATIC WPT_INLINE void
23874WDI_ExtractRequestCBFromEvent
23875(
23876 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 void** ppUserData
23879)
23880{
23881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23882 switch ( pEvent->wdiRequest )
23883 {
23884 case WDI_START_REQ:
23885 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23886 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23887 break;
23888 case WDI_STOP_REQ:
23889 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23890 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23891 break;
23892 case WDI_INIT_SCAN_REQ:
23893 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23894 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23895 break;
23896 case WDI_START_SCAN_REQ:
23897 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23898 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23899 break;
23900 case WDI_END_SCAN_REQ:
23901 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23902 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23903 break;
23904 case WDI_FINISH_SCAN_REQ:
23905 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23906 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23907 break;
23908 case WDI_JOIN_REQ:
23909 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23910 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23911 break;
23912 case WDI_CONFIG_BSS_REQ:
23913 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23914 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23915 break;
23916 case WDI_DEL_BSS_REQ:
23917 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23918 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23919 break;
23920 case WDI_POST_ASSOC_REQ:
23921 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23922 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23923 break;
23924 case WDI_DEL_STA_REQ:
23925 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23926 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23927 break;
23928 case WDI_DEL_STA_SELF_REQ:
23929 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23930 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23931 break;
23932
23933 case WDI_SET_BSS_KEY_REQ:
23934 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23935 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23936 break;
23937 case WDI_RMV_BSS_KEY_REQ:
23938 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23939 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23940 break;
23941 case WDI_SET_STA_KEY_REQ:
23942 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23943 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23944 break;
23945 case WDI_RMV_STA_KEY_REQ:
23946 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23947 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23948 break;
23949 case WDI_ADD_TS_REQ:
23950 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23951 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23952 break;
23953 case WDI_DEL_TS_REQ:
23954 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23955 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23956 break;
23957 case WDI_UPD_EDCA_PRMS_REQ:
23958 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23959 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23960 break;
23961 case WDI_ADD_BA_SESSION_REQ:
23962 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23963 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23964 break;
23965 case WDI_DEL_BA_REQ:
23966 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23967 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23968 break;
23969#ifdef FEATURE_WLAN_CCX
23970 case WDI_TSM_STATS_REQ:
23971 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23972 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23973 break;
23974#endif
23975 case WDI_CH_SWITCH_REQ:
23976 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23977 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23978 break;
23979 case WDI_CONFIG_STA_REQ:
23980 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23981 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23982 break;
23983 case WDI_SET_LINK_ST_REQ:
23984 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23985 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23986 break;
23987 case WDI_GET_STATS_REQ:
23988 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23989 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23990 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023991#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23992 case WDI_GET_ROAM_RSSI_REQ:
23993 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23994 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23995 break;
23996#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 case WDI_UPDATE_CFG_REQ:
23998 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23999 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24000 break;
24001 case WDI_ADD_BA_REQ:
24002 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24003 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24004 break;
24005 case WDI_TRIGGER_BA_REQ:
24006 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24007 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24008 break;
24009 case WDI_UPD_BCON_PRMS_REQ:
24010 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24011 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24012 break;
24013 case WDI_SND_BCON_REQ:
24014 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24015 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24016 break;
24017 case WDI_ENTER_BMPS_REQ:
24018 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24019 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24020 break;
24021 case WDI_EXIT_BMPS_REQ:
24022 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24023 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24024 break;
24025 case WDI_ENTER_UAPSD_REQ:
24026 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24027 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24028 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024029 case WDI_EXIT_UAPSD_REQ:
24030 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24031 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24032 break;
24033 case WDI_SET_UAPSD_PARAM_REQ:
24034 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24035 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24036 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 case WDI_UPDATE_UAPSD_PARAM_REQ:
24038 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24039 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24040 break;
24041 case WDI_CONFIGURE_RXP_FILTER_REQ:
24042 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24043 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24044 break;
24045 case WDI_SET_BEACON_FILTER_REQ:
24046 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24047 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24048 break;
24049 case WDI_REM_BEACON_FILTER_REQ:
24050 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24051 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 case WDI_SET_RSSI_THRESHOLDS_REQ:
24054 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24055 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24056 break;
24057 case WDI_HOST_OFFLOAD_REQ:
24058 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24059 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24060 break;
24061 case WDI_WOWL_ADD_BC_PTRN_REQ:
24062 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24063 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24064 break;
24065 case WDI_WOWL_DEL_BC_PTRN_REQ:
24066 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24067 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24068 break;
24069 case WDI_WOWL_ENTER_REQ:
24070 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24071 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24072 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024073 case WDI_WOWL_EXIT_REQ:
24074 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24075 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24076 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24078 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24079 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24080 break;
24081 case WDI_FLUSH_AC_REQ:
24082 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24083 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24084 break;
24085 case WDI_BTAMP_EVENT_REQ:
24086 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24087 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24088 break;
24089 case WDI_KEEP_ALIVE_REQ:
24090 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24091 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24092 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024093#if defined FEATURE_WLAN_SCAN_PNO
24094 case WDI_SET_PREF_NETWORK_REQ:
24095 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24096 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24097 break;
24098 case WDI_SET_RSSI_FILTER_REQ:
24099 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24100 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24101 break;
24102 case WDI_UPDATE_SCAN_PARAMS_REQ:
24103 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24104 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24105 break;
24106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 case WDI_SET_TX_PER_TRACKING_REQ:
24108 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24109 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024110 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024111#if defined WLAN_FEATURE_PACKET_FILTERING
24112 case WDI_8023_MULTICAST_LIST_REQ:
24113 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24114 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24115 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024116 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24117 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24118 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24119 break;
24120 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24121 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24122 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24123 break;
24124 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24125 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24126 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24127 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024128#endif
24129 case WDI_SET_POWER_PARAMS_REQ:
24130 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24131 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24132 break;
24133#if defined WLAN_FEATURE_GTK_OFFLOAD
24134 case WDI_GTK_OFFLOAD_REQ:
24135 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24136 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24137 break;
24138 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24139 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24140 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24141 break;
24142#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024143
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 default:
24145 *ppfnReqCB = NULL;
24146 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 }
24149}/*WDI_ExtractRequestCBFromEvent*/
24150
24151
24152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 frame xtl is enabled for a particular STA.
24155
24156 WDI_PostAssocReq must have been called.
24157
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 @param uSTAIdx: STA index
24159
Jeff Johnson295189b2012-06-20 16:38:30 -070024160 @see WDI_PostAssocReq
24161 @return Result of the function call
24162*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024163wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024164WDI_IsHwFrameTxTranslationCapable
24165(
24166 wpt_uint8 uSTAIdx
24167)
24168{
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 uma value*/
24171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 ------------------------------------------------------------------------*/
24174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24175 {
24176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24177 "WDI API call before module is initialized - Fail request");
24178
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 }
24181
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024182#ifdef WLAN_SOFTAP_VSTA_FEATURE
24183 if (IS_VSTA_IDX(uSTAIdx))
24184 {
24185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24186 "STA %d is a Virtual STA, "
24187 "HW frame translation disabled", uSTAIdx);
24188 return eWLAN_PAL_FALSE;
24189 }
24190#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024191
Jeff Johnson295189b2012-06-20 16:38:30 -070024192 return gWDICb.bFrameTransEnabled;
24193}/*WDI_IsHwFrameTxTranslationCapable*/
24194
24195#ifdef FEATURE_WLAN_SCAN_PNO
24196/**
24197 @brief WDI_SetPreferredNetworkList
24198
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024201
Jeff Johnson295189b2012-06-20 16:38:30 -070024202 wdiPNOScanCb: callback for passing back the response
24203 of the Set PNO operation received from the
24204 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024205
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 callback
24208
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 @return Result of the function call
24210*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024212WDI_SetPreferredNetworkReq
24213(
24214 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24215 WDI_PNOScanCb wdiPNOScanCb,
24216 void* pUserData
24217)
24218{
24219 WDI_EventInfoType wdiEventData = {{0}};
24220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24221
24222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 ------------------------------------------------------------------------*/
24225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24226 {
24227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24228 "WDI API call before module is initialized - Fail request");
24229
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 }
24232
24233 /*------------------------------------------------------------------------
24234 Fill in Event data and post to the Main FSM
24235 ------------------------------------------------------------------------*/
24236 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 wdiEventData.pUserData = pUserData;
24241
24242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24243}
24244
24245
24246/**
24247 @brief WDI_SetRssiFilterReq
24248
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024251
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 wdiRssiFilterCb: callback for passing back the response
24253 of the Set RSSI Filter operation received from the
24254 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024255
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 callback
24258
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 @return Result of the function call
24260*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024262WDI_SetRssiFilterReq
24263(
24264 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24265 WDI_RssiFilterCb wdiRssiFilterCb,
24266 void* pUserData
24267)
24268{
24269 WDI_EventInfoType wdiEventData = {{0}};
24270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24271
24272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 ------------------------------------------------------------------------*/
24275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24276 {
24277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24278 "WDI API call before module is initialized - Fail request");
24279
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 }
24282
24283 /*------------------------------------------------------------------------
24284 Fill in Event data and post to the Main FSM
24285 ------------------------------------------------------------------------*/
24286 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 wdiEventData.pUserData = pUserData;
24291
24292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24293}/*WDI_SetRssiFilterReq*/
24294
24295/**
24296 @brief WDI_UpdateScanParamsReq
24297
Jeff Johnsone7245742012-09-05 17:12:55 -070024298 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024300
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 wdiUpdateScanParamsCb: callback for passing back the response
24302 of the Set PNO operation received from the
24303 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024304
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 callback
24307
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 @return Result of the function call
24309*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024311WDI_UpdateScanParamsReq
24312(
24313 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24314 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24315 void* pUserData
24316)
24317{
24318 WDI_EventInfoType wdiEventData = {{0}};
24319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24320
24321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 ------------------------------------------------------------------------*/
24324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24325 {
24326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24327 "WDI API call before module is initialized - Fail request");
24328
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 }
24331
24332 /*------------------------------------------------------------------------
24333 Fill in Event data and post to the Main FSM
24334 ------------------------------------------------------------------------*/
24335 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 wdiEventData.pUserData = pUserData;
24340
24341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24342}
24343
24344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024347
24348 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 pwdiPNOScanReqParams: pointer to the info received
24350 from upper layers
24351 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 and its size
24353
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 @return Result of the function call
24355*/
24356
24357WDI_Status
24358WDI_PackPreferredNetworkList
24359(
24360 WDI_ControlBlockType* pWDICtx,
24361 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24362 wpt_uint8** ppSendBuffer,
24363 wpt_uint16* pSize
24364)
24365{
Jeff Johnsone7245742012-09-05 17:12:55 -070024366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 wpt_uint16 usDataOffset = 0;
24368 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024369 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 /*-----------------------------------------------------------------------
24372 Get message buffer
24373 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024375 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024377 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 {
24379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024380 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 pwdiPNOScanReqParams);
24382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 }
24385
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024386 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24387
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 /*-------------------------------------------------------------------------
24389 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24390 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024391 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024393 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24395
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024396 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024397 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024398 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24401
24402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24405 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24406 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24407
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024408 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 {
24410 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024411 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24413
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024414 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024416 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024417
24418 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024419 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024421
24422 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024423 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024424 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024425
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024428 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024429 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24430 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24431 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24432 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024434 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024436 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024437
24438 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024439 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24441
24442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024444 pPrefNetwListParams->aNetworks[i].ssId.length,
24445 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 }
24447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024448 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24451 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24452 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24453
24454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024456 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24458 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24459
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024460 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024462 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024464 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24466 }
24467
24468 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024469 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24471 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24472 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024474
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024475 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024477 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024478
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024479 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24481 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24482 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024485 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024487 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024488
24489 /*Set the output values*/
24490 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024492
24493 return WDI_STATUS_SUCCESS;
24494}/*WDI_PackPreferredNetworkList*/
24495
24496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024499
24500 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 pwdiPNOScanReqParams: pointer to the info received
24502 from upper layers
24503 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 and its size
24505
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 @return Result of the function call
24507*/
24508
24509WDI_Status
24510WDI_PackPreferredNetworkListNew
24511(
24512 WDI_ControlBlockType* pWDICtx,
24513 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24514 wpt_uint8** ppSendBuffer,
24515 wpt_uint16* pSize
24516)
24517{
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024519 wpt_uint16 usDataOffset = 0;
24520 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024521 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024523
24524 /*-----------------------------------------------------------------------
24525 Get message buffer
24526 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024528 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024530 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 {
24532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024533 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 pwdiPNOScanReqParams);
24535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 }
24538
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024539 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24540
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 /*-------------------------------------------------------------------------
24542 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24543 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024544 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024546 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24548
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024549 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024552 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24554
24555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24558 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24559 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24560
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024561 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 {
24563 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024564 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24566
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024567 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024568 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024569 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024570
24571 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024572 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024573 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024574
24575 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024576 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024578
24579 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024580 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024582
Jeff Johnsone7245742012-09-05 17:12:55 -070024583 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024584 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024585 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024586 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24587
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024588 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024590 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024591
24592 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024593 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24595
24596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024597 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024598 pPrefNetwListParams->aNetworks[i].ssId.length,
24599 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 }
24601
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024602 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024603 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24605 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24606 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24607
24608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024610 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24612 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24613
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024614 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024615 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024616 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024617 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024618 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24620 }
24621
24622 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024623 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24625 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24626 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024628
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024629 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024631 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024632
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024633 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24635 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24636 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024637 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024638
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024639 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024641 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024642
Jeff Johnson295189b2012-06-20 16:38:30 -070024643
24644 /*Set the output values*/
24645 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024647
24648 return WDI_STATUS_SUCCESS;
24649}/*WDI_PackPreferredNetworkListNew*/
24650
24651/**
24652 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024653
24654 @param pWDICtx: pointer to the WLAN DAL context
24655 pEventData: pointer to the event information structure
24656
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 @return Result of the function call
24658*/
24659WDI_Status
24660WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024661(
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 WDI_ControlBlockType* pWDICtx,
24663 WDI_EventInfoType* pEventData
24664)
24665{
24666 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24667 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024668 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024671
24672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024674 -------------------------------------------------------------------------*/
24675 if (( NULL == pEventData ) ||
24676 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24677 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24678 {
24679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 }
24684
24685 /*-------------------------------------------------------------------------
24686 Pack the PNO request structure based on version
24687 -------------------------------------------------------------------------*/
24688 if ( pWDICtx->wdiPNOVersion > 0 )
24689 {
24690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024691 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 pWDICtx->wdiPNOVersion);
24693
24694 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24695 &pSendBuffer, &usSendSize);
24696 }
24697 else
24698 {
24699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024700 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 pWDICtx->wdiPNOVersion);
24702
24703 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24704 &pSendBuffer, &usSendSize);
24705 }
24706
24707 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24708 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24709 {
24710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024711 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 }
24715
24716 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024717 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718
24719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024720 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24723 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024724}
24725
24726/**
24727 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024728
24729 @param pWDICtx: pointer to the WLAN DAL context
24730 pEventData: pointer to the event information structure
24731
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 @see
24733 @return Result of the function call
24734*/
24735WDI_Status
24736WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024737(
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 WDI_ControlBlockType* pWDICtx,
24739 WDI_EventInfoType* pEventData
24740)
24741{
24742 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24743 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 wpt_uint16 usDataOffset = 0;
24746 wpt_uint16 usSendSize = 0;
24747 wpt_uint8 ucRssiThreshold;
24748
24749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 -------------------------------------------------------------------------*/
24752 if (( NULL == pEventData ) ||
24753 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24754 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24755 {
24756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 }
24761
24762 /*-----------------------------------------------------------------------
24763 Get message buffer
24764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 sizeof(ucRssiThreshold),
24767 &pSendBuffer, &usDataOffset, &usSendSize))||
24768 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24769 {
24770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024771 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 }
24776
24777 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24778
Jeff Johnsone7245742012-09-05 17:12:55 -070024779 wpalMemoryCopy( pSendBuffer+usDataOffset,
24780 &ucRssiThreshold,
24781 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024782
24783 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785
24786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024787 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24790 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024791}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024792#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24793/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024794 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024795
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024796 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024797 by the Device Interface
24798
24799 wdiRoamOffloadScancb: callback for passing back the response
24800 of the Roam Candidate Lookup Req operation received from the
24801 device
24802
24803 pUserData: user data will be passed back with the
24804 callback
24805 @return Result of the function call
24806*/
24807WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024808WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024809(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024810 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024811 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24812 void* pUserData
24813)
24814{
24815 WDI_EventInfoType wdiEventData = {{0}};
24816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24817
24818 /*------------------------------------------------------------------------
24819 Sanity Check
24820 ------------------------------------------------------------------------*/
24821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24822 {
24823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24824 "WDI API call before module is initialized - Fail request");
24825
24826 return WDI_STATUS_E_NOT_ALLOWED;
24827 }
24828
24829 /*------------------------------------------------------------------------
24830 Fill in Event data and post to the Main FSM
24831 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024832 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24833 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24834 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024835 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24836 wdiEventData.pUserData = pUserData;
24837
24838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24839}
24840
24841void
24842WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24843{
24844 switch (wdiEdType)
24845 {
24846 case WDI_ED_NONE:
24847 *EdType = eED_NONE;
24848 break;
24849 case WDI_ED_WEP40:
24850 case WDI_ED_WEP104:
24851 *EdType = eED_WEP;
24852 break;
24853 case WDI_ED_TKIP:
24854 *EdType = eED_TKIP;
24855 break;
24856 case WDI_ED_CCMP:
24857#ifdef WLAN_FEATURE_11W
24858 case WDI_ED_AES_128_CMAC:
24859#endif
24860 *EdType = eED_CCMP;
24861 break;
24862#ifdef FEATURE_WLAN_WAPI
24863 case WDI_ED_WPI:
24864 *EdType = eED_WPI;
24865 break;
24866#endif
24867 case WDI_ED_ANY:
24868 *EdType = eED_ANY;
24869 break;
24870
24871 default:
24872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24873 "%s: Unknown Encryption Type", __func__);
24874 break;
24875 }
24876}
24877
24878/**
24879 @brief Helper function to pack Start Roam Candidate Lookup
24880 Request parameters
24881
24882 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024883 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024884 from upper layers
24885 ppSendBuffer, pSize - out pointers of the packed buffer
24886 and its size
24887
24888 @return Result of the function call
24889*/
24890
24891WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024892WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024893(
24894 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024895 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024896 wpt_uint8** ppSendBuffer,
24897 wpt_uint16* pSize
24898)
24899{
24900 wpt_uint8* pSendBuffer = NULL;
24901 wpt_uint16 usDataOffset = 0;
24902 wpt_uint16 usSendSize = 0;
24903 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24904 wpt_uint8 i;
24905 /*-----------------------------------------------------------------------
24906 Get message buffer
24907 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024909 sizeof(tRoamCandidateListParams),
24910 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024911 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024912 {
24913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024914 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024915 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024916 WDI_ASSERT(0);
24917 return WDI_STATUS_E_FAILURE;
24918 }
24919 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024920 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024921 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024922 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024923 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024924 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024925 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024926 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024927 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024928 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024929 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024930
24931 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024932 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024933 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024934 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024935 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24936 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024937 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24938 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24939 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24940 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24941 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu2ce47b32014-01-09 21:55:37 -080024942 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024943 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024944 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024945 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24946 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24947 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24948 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24949 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24950 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24951 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24952 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024953 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024954 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24955 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24956 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024957
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24959 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24960 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24961 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24962 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24963 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080024964 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024965 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24966 pRoamCandidateListParams->RoamScanOffloadEnabled,
24967 pRoamCandidateListParams->Command,
24968 pRoamCandidateListParams->StartScanReason,
24969 pRoamCandidateListParams->NeighborScanTimerPeriod,
24970 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24971 pRoamCandidateListParams->NeighborScanChannelMinTime,
24972 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24973 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24974 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24975 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24976 pRoamCandidateListParams->ConnectedNetwork.authentication,
24977 pRoamCandidateListParams->ConnectedNetwork.encryption,
24978 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24979 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24980 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024981 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024982 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024983 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024984 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024985 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24986 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024987 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024988 pRoamCandidateListParams->us24GProbeSize);
24989 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024990 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024991 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024992 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024993 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24994 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024995 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024996 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024997 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24998 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24999 pRoamCandidateListParams->nProbes =
25000 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25001 pRoamCandidateListParams->HomeAwayTime =
25002 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025004 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25005 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025007 }
25008
25009
25010 /*Set the output values*/
25011 *ppSendBuffer = pSendBuffer;
25012 *pSize = usSendSize;
25013 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025014}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025015
25016/**
25017 @brief Process Start Roam Candidate Lookup Request function
25018
25019 @param pWDICtx: pointer to the WLAN DAL context
25020 pEventData: pointer to the event information structure
25021
25022 @return Result of the function call
25023*/
25024WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025025WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025026(
25027 WDI_ControlBlockType* pWDICtx,
25028 WDI_EventInfoType* pEventData
25029)
25030{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025031 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025032 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25033 wpt_uint8* pSendBuffer = NULL;
25034 wpt_uint16 usSendSize = 0;
25035 WDI_Status wdiStatus;
25036 /*-------------------------------------------------------------------------
25037 Sanity check
25038 -------------------------------------------------------------------------*/
25039 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025040 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025041 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25042 {
25043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25044 "%s: Invalid parameters", __func__);
25045 WDI_ASSERT(0);
25046 return WDI_STATUS_E_FAILURE;
25047 }
25048
25049 /*-------------------------------------------------------------------------
25050 Pack the Start Roam Candidate Lookup request structure based on version
25051 -------------------------------------------------------------------------*/
25052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25053 "%s: Packing Roam Candidate Lookup request ", __func__);
25054
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025055 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025056 &pSendBuffer, &usSendSize);
25057
25058 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25059 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25060 {
25061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25062 "%s: failed to pack request parameters", __func__);
25063 WDI_ASSERT(0);
25064 return wdiStatus;
25065 }
25066
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025067 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25068 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025069
25070 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025071 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025072 -------------------------------------------------------------------------*/
25073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025074 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025075}
25076
25077/**
25078 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25079 response is being received over the bus from HAL)
25080
25081 @param pWDICtx: pointer to the WLAN DAL context
25082 pEventData: pointer to the event information structure
25083
25084 @see
25085 @return Result of the function call
25086*/
25087WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025088WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025089(
25090 WDI_ControlBlockType* pWDICtx,
25091 WDI_EventInfoType* pEventData
25092)
25093{
25094 WDI_Status wdiStatus;
25095 eHalStatus halStatus;
25096 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25097
25098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25099
25100 /*-------------------------------------------------------------------------
25101 Sanity check
25102 -------------------------------------------------------------------------*/
25103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25104 ( NULL == pEventData->pEventData ))
25105 {
25106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25107 "%s: Invalid parameters", __func__);
25108 WDI_ASSERT(0);
25109 return WDI_STATUS_E_FAILURE;
25110 }
25111
25112 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25113
25114 /*-------------------------------------------------------------------------
25115 Extract response and send it to UMAC
25116 -------------------------------------------------------------------------*/
25117 halStatus = *((eHalStatus*)pEventData->pEventData);
25118 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25119
25120 /*Notify UMAC*/
25121 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25122
25123 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025124}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025125#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025126
25127/**
25128 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025129
25130 @param pWDICtx: pointer to the WLAN DAL context
25131 pEventData: pointer to the event information structure
25132
Jeff Johnson295189b2012-06-20 16:38:30 -070025133 @see
25134 @return Result of the function call
25135*/
25136WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025137WDI_PackUpdateScanParamsReq
25138(
25139 WDI_ControlBlockType* pWDICtx,
25140 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25141 wpt_uint8** ppSendBuffer,
25142 wpt_uint16* pSize
25143)
25144{
25145 wpt_uint8* pSendBuffer = NULL;
25146 wpt_uint16 usDataOffset = 0;
25147 wpt_uint16 usSendSize = 0;
25148 tUpdateScanParams updateScanParams = {0};
25149
25150
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025152 "Begin WDI Update Scan Parameters Old Style Params");
25153 /*-----------------------------------------------------------------------
25154 Get message buffer
25155 -----------------------------------------------------------------------*/
25156 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25157 sizeof(updateScanParams),
25158 &pSendBuffer, &usDataOffset, &usSendSize))||
25159 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25160 {
25161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025162 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025163 pwdiUpdateScanParams);
25164 WDI_ASSERT(0);
25165 return WDI_STATUS_E_FAILURE;
25166 }
25167
25168 //
25169 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25170 //
25171
25172 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25173 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25174
25175 updateScanParams.ucChannelCount =
25176 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25177 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25178 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25179 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25180
25181 wpalMemoryCopy( updateScanParams.aChannels,
25182 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25183 updateScanParams.ucChannelCount);
25184
25185
25186 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25187 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25188 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25189 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25190 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25191
25192 wpalMemoryCopy( pSendBuffer+usDataOffset,
25193 &updateScanParams,
25194 sizeof(updateScanParams));
25195
25196 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25197 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25198
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025200 "End Update Scan Parameters Old Style");
25201
25202 /*Set the output values*/
25203 *ppSendBuffer = pSendBuffer;
25204 *pSize = usSendSize;
25205
25206 return WDI_STATUS_SUCCESS;
25207}
25208
25209/**
25210 @brief Process Update Scan Params function
25211
25212 @param pWDICtx: pointer to the WLAN DAL context
25213 pEventData: pointer to the event information structure
25214
25215 @see
25216 @return Result of the function call
25217*/
25218WDI_Status
25219WDI_PackUpdateScanParamsReqEx
25220(
25221 WDI_ControlBlockType* pWDICtx,
25222 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25223 wpt_uint8** ppSendBuffer,
25224 wpt_uint16* pSize
25225)
25226{
25227 wpt_uint8* pSendBuffer = NULL;
25228 wpt_uint16 usDataOffset = 0;
25229 wpt_uint16 usSendSize = 0;
25230 tUpdateScanParamsEx updateScanParams = {0};
25231
25232
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025233 /*-----------------------------------------------------------------------
25234 Get message buffer
25235 -----------------------------------------------------------------------*/
25236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25237 sizeof(updateScanParams),
25238 &pSendBuffer, &usDataOffset, &usSendSize))||
25239 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25240 {
25241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025242 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025243 pwdiUpdateScanParams);
25244 WDI_ASSERT(0);
25245 return WDI_STATUS_E_FAILURE;
25246 }
25247
25248 //
25249 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25250 //
25251
25252 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25253 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25254
25255 updateScanParams.ucChannelCount =
25256 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25257 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25258 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25259 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25260
25261 wpalMemoryCopy( updateScanParams.aChannels,
25262 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25263 updateScanParams.ucChannelCount);
25264
25265
25266 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25267 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25268 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25269 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25270 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25271
25272 wpalMemoryCopy( pSendBuffer+usDataOffset,
25273 &updateScanParams,
25274 sizeof(updateScanParams));
25275
25276 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25277 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25278
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025279 /*Set the output values*/
25280 *ppSendBuffer = pSendBuffer;
25281 *pSize = usSendSize;
25282
25283 return WDI_STATUS_SUCCESS;
25284}
25285
25286/**
25287 @brief Process Update Scan Params function
25288
25289 @param pWDICtx: pointer to the WLAN DAL context
25290 pEventData: pointer to the event information structure
25291
25292 @see
25293 @return Result of the function call
25294*/
25295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025296WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025297(
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 WDI_ControlBlockType* pWDICtx,
25299 WDI_EventInfoType* pEventData
25300)
25301{
25302 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25303 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025305 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025306 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025307
25308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 -------------------------------------------------------------------------*/
25311 if (( NULL == pEventData ) ||
25312 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25313 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25314 {
25315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 }
25320
25321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25322 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025323
25324 //
25325 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25326 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025327 if ( pWDICtx->wlanVersion.revision < 1 )
25328 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025329 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025330 &pSendBuffer, &usSendSize);
25331 }
25332 else
25333 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025334 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25335 &pSendBuffer, &usSendSize);
25336 }
25337
25338 if(WDI_STATUS_SUCCESS != wdiStatus)
25339 {
25340 //memory allocation failed
25341 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025343
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025345 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025348 wdiUpdateScanParamsCb, pEventData->pUserData,
25349 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025350}
25351
25352/**
25353 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025354
25355 @param pWDICtx: pointer to the WLAN DAL context
25356 pEventData: pointer to the event information structure
25357
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 @see
25359 @return Result of the function call
25360*/
25361WDI_Status
25362WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025363(
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 WDI_ControlBlockType* pWDICtx,
25365 WDI_EventInfoType* pEventData
25366)
25367{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025368 WDI_LowLevelIndType wdiInd;
25369 tpPrefNetwFoundParams pNetwFoundParams;
25370 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025371
25372
25373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025375 -------------------------------------------------------------------------*/
25376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25377 ( NULL == pEventData->pEventData ))
25378 {
25379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025381 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025383 }
25384
25385 /*-------------------------------------------------------------------------
25386 Extract indication and send it to UMAC
25387 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025388 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25389
25390 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25391 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25392 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25393
25394 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25395 {
25396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25397 "%s: fail to allocate memory", __func__);
25398 return WDI_STATUS_MEM_FAILURE;
25399 }
25400
25401 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25402 (pNetwFoundParams->ssId.length < 32 )?
25403 pNetwFoundParams->ssId.length : 32;
25404 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25405 pNetwFoundParams->ssId.ssId,
25406 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25407 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25408 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25409 pNetwFoundParams->frameLength;
25410 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25411 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25412 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025413
25414 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025415 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025416
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 // DEBUG
25418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025419 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025420 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025421 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025422 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025423 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25425
ltimariu034f7d62013-01-24 18:54:33 -080025426 if ( pWDICtx->wdiLowLevelIndCB )
25427 {
25428 /*Notify UMAC*/
25429 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25430 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025431
25432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025433}
25434
25435/**
25436 @brief Process PNO Rsp function (called when a
25437 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025438
25439 @param pWDICtx: pointer to the WLAN DAL context
25440 pEventData: pointer to the event information structure
25441
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 @see
25443 @return Result of the function call
25444*/
25445WDI_Status
25446WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025447(
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 WDI_ControlBlockType* pWDICtx,
25449 WDI_EventInfoType* pEventData
25450)
25451{
25452 WDI_Status wdiStatus;
25453 eHalStatus halStatus;
25454 WDI_PNOScanCb wdiPNOScanCb = NULL;
25455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25456
25457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025459 -------------------------------------------------------------------------*/
25460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25461 ( NULL == pEventData->pEventData ))
25462 {
25463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 }
25468
25469
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025471
25472 /*-------------------------------------------------------------------------
25473 Extract response and send it to UMAC
25474 -------------------------------------------------------------------------*/
25475 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025477
25478 /*Notify UMAC*/
25479 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25480
Jeff Johnsone7245742012-09-05 17:12:55 -070025481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025482}/*WDI_ProcessSetPreferredNetworkRsp*/
25483
25484/**
25485 @brief Process RSSI Filter Rsp function (called when a
25486 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025487
25488 @param pWDICtx: pointer to the WLAN DAL context
25489 pEventData: pointer to the event information structure
25490
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 @see
25492 @return Result of the function call
25493*/
25494WDI_Status
25495WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025496(
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 WDI_ControlBlockType* pWDICtx,
25498 WDI_EventInfoType* pEventData
25499)
25500{
25501 WDI_Status wdiStatus;
25502 eHalStatus halStatus;
25503 WDI_RssiFilterCb wdiRssiFilterCb;
25504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25505
25506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 -------------------------------------------------------------------------*/
25509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25510 ( NULL == pEventData->pEventData ))
25511 {
25512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 }
25517
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519
25520 /*-------------------------------------------------------------------------
25521 Extract response and send it to UMAC
25522 -------------------------------------------------------------------------*/
25523 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025524 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025525
25526 /*Notify UMAC*/
25527 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25528
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025530}/*WDI_ProcessSetRssiFilterRsp*/
25531
25532/**
25533 @brief Process Update Scan Params Rsp function (called when a
25534 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025535
25536 @param pWDICtx: pointer to the WLAN DAL context
25537 pEventData: pointer to the event information structure
25538
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 @see
25540 @return Result of the function call
25541*/
25542WDI_Status
25543WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025544(
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 WDI_ControlBlockType* pWDICtx,
25546 WDI_EventInfoType* pEventData
25547)
25548{
25549 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025550 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025551 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25554
25555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025557 -------------------------------------------------------------------------*/
25558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25559 ( NULL == pEventData->pEventData ))
25560 {
25561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 }
25566
25567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025568 "%s: Process UPD scan params ptr : %p",
25569 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025570
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025572
25573 /*-------------------------------------------------------------------------
25574 Extract response and send it to UMAC
25575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25577 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 sizeof(halUpdScanParams.status));
25579
25580 uStatus = halUpdScanParams.status;
25581
25582 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025583 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025584
25585 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025587
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025589
25590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 halUpdScanParams.status);
25593
25594 /*Notify UMAC*/
25595 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25596
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025598}
25599#endif // FEATURE_WLAN_SCAN_PNO
25600
25601#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025603WDI_8023MulticastListReq
25604(
25605 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25606 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25607 void* pUserData
25608)
25609{
25610 WDI_EventInfoType wdiEventData;
25611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25612
25613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025614 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025615
25616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 ------------------------------------------------------------------------*/
25619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25620 {
25621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25622 "WDI API call before module is initialized - Fail request");
25623
Jeff Johnsone7245742012-09-05 17:12:55 -070025624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025625 }
25626
25627 /*------------------------------------------------------------------------
25628 Fill in Event data and post to the Main FSM
25629 ------------------------------------------------------------------------*/
25630 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025633 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 wdiEventData.pUserData = pUserData;
25635
25636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25637}
25638
Jeff Johnsone7245742012-09-05 17:12:55 -070025639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025640WDI_ReceiveFilterSetFilterReq
25641(
25642 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25643 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25644 void* pUserData
25645)
25646{
25647 WDI_EventInfoType wdiEventData;
25648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25649
25650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025651 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652
25653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 ------------------------------------------------------------------------*/
25656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25657 {
25658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25659 "WDI API call before module is initialized - Fail request");
25660
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 }
25663
25664 /*------------------------------------------------------------------------
25665 Fill in Event data and post to the Main FSM
25666 ------------------------------------------------------------------------*/
25667 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025668 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25669 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025670 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25671 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 wdiEventData.pUserData = pUserData;
25674
25675
25676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25677}
25678
Jeff Johnsone7245742012-09-05 17:12:55 -070025679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025680WDI_FilterMatchCountReq
25681(
25682 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25683 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25684 void* pUserData
25685)
25686{
25687 WDI_EventInfoType wdiEventData;
25688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25689
25690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025691 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025692
25693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025695 ------------------------------------------------------------------------*/
25696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25697 {
25698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25699 "WDI API call before module is initialized - Fail request");
25700
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 }
25703
25704 /*------------------------------------------------------------------------
25705 Fill in Event data and post to the Main FSM
25706 ------------------------------------------------------------------------*/
25707 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025710 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 wdiEventData.pUserData = pUserData;
25712
25713
25714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25715}
25716
Jeff Johnsone7245742012-09-05 17:12:55 -070025717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025718WDI_ReceiveFilterClearFilterReq
25719(
25720 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25721 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25722 void* pUserData
25723)
25724{
25725 WDI_EventInfoType wdiEventData;
25726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25727
25728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025729 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025730
25731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 ------------------------------------------------------------------------*/
25734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25735 {
25736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25737 "WDI API call before module is initialized - Fail request");
25738
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 }
25741
25742 /*------------------------------------------------------------------------
25743 Fill in Event data and post to the Main FSM
25744 ------------------------------------------------------------------------*/
25745 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025746 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 wdiEventData.pUserData = pUserData;
25750
25751
25752 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25753}
25754
25755/**
25756 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025757
25758 @param pWDICtx: pointer to the WLAN DAL context
25759 pEventData: pointer to the event information structure
25760
Jeff Johnson295189b2012-06-20 16:38:30 -070025761 @see
25762 @return Result of the function call
25763*/
25764WDI_Status
25765WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025766(
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 WDI_ControlBlockType* pWDICtx,
25768 WDI_EventInfoType* pEventData
25769)
25770{
25771 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25772 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 wpt_uint16 usDataOffset = 0;
25775 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025776 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025777 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025778 wpt_uint8 ucCurrentBSSSesIdx = 0;
25779 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025780
25781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025782 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025783
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025784 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25785 if( NULL == pRcvFltMcAddrListType )
25786 {
25787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25788 "Failed to alloc in WDI_Process8023MulticastListReq");
25789 return WDI_STATUS_E_FAILURE;
25790 }
25791
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025794 -------------------------------------------------------------------------*/
25795 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025796 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25800 {
25801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025802 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025803 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 return WDI_STATUS_E_FAILURE;
25806 }
25807
25808 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25809 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25810 &pBSSSes);
25811 if ( NULL == pBSSSes )
25812 {
25813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025814 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025815 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 }
25818
25819 /*-----------------------------------------------------------------------
25820 Get message buffer
25821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25823 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 sizeof(tHalRcvFltMcAddrListType),
25825 &pSendBuffer, &usDataOffset, &usSendSize))||
25826 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25827 {
25828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25829 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025830 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025831 pEventData, pwdiFltPktSetMcListReqParamsType,
25832 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025833 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 }
25837
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025838 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025840 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025842 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25844 sizeof(tSirMacAddr));
25845 }
25846
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025847 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025849 pRcvFltMcAddrListType,
25850 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025851
25852 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025853 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025854
25855
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025856 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025858 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025862 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025863}
25864
25865/**
25866 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025867
25868 @param pWDICtx: pointer to the WLAN DAL context
25869 pEventData: pointer to the event information structure
25870
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 @see
25872 @return Result of the function call
25873*/
25874WDI_Status
25875WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025876(
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 WDI_ControlBlockType* pWDICtx,
25878 WDI_EventInfoType* pEventData
25879)
25880{
25881 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25882 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 wpt_uint16 usDataOffset = 0;
25885 wpt_uint16 usSendSize = 0;
25886 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025887 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 wpt_uint8 ucCurrentBSSSesIdx = 0;
25890 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025891 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25892 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025893
25894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025895 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025896
25897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 -------------------------------------------------------------------------*/
25900 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025901 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025903 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25905 {
25906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 return WDI_STATUS_E_FAILURE;
25910 }
25911
25912 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25913 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25914 &pBSSSes);
25915 if ( NULL == pBSSSes )
25916 {
25917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025918 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 }
25921
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025922 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25923 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025925 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25926 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25927 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25928
25929 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25930 usSessRcvPktFilterCfgSize);
25931
25932 if(NULL == pSessRcvPktFilterCfg)
25933 {
25934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25935 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025936 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025937 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025938 WDI_ASSERT(0);
25939 return WDI_STATUS_E_FAILURE;
25940 }
25941
25942 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25943
25944 /*-----------------------------------------------------------------------
25945 Get message buffer
25946 -----------------------------------------------------------------------*/
25947
25948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25949 usSessRcvPktFilterCfgSize,
25950 &pSendBuffer, &usDataOffset, &usSendSize))||
25951 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25952 {
25953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25954 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025955 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025956 pEventData, pwdiSetRcvPktFilterReqInfo,
25957 wdiReceiveFilterSetFilterCb);
25958 WDI_ASSERT(0);
25959 wpalMemoryFree(pSessRcvPktFilterCfg);
25960 return WDI_STATUS_E_FAILURE;
25961 }
25962
25963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025964 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025965 usSendSize,pSessRcvPktFilterCfg);
25966
25967 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25968 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25969 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25970 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25971
25972 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25973
25974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25975 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25976 pSessRcvPktFilterCfg->filterType);
25977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25978 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25979 pSessRcvPktFilterCfg->coleasceTime);
25980
25981 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25982 {
25983 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25984 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25985 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25986 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25987 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25988 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25989 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25990 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25991
25992 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25993 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25994 8);
25995 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25996 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25997 8);
25998
25999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026000 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026001 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26002 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26003
26004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026005 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026006 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26007 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26008
26009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026010 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026011 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26012 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26013 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26014 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26015 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26016 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26017
26018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026019 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026020 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26021 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26022 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26023 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26024 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26025 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26026 }
26027
26028 wpalMemoryCopy( pSendBuffer+usDataOffset,
26029 pSessRcvPktFilterCfg,
26030 usSessRcvPktFilterCfgSize);
26031
26032
26033 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26034 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26035
26036 wpalMemoryFree(pSessRcvPktFilterCfg);
26037
26038 }
26039 /*If SLM_SESSIONIZATION is not supported then do this */
26040 else
26041 {
26042 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26043 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26044 * sizeof(tHalRcvPktFilterParams));
26045
26046 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 usRcvPktFilterCfgSize);
26048
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026049 if(NULL == pRcvPktFilterCfg)
26050 {
26051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26052 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026053 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026054 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026055 WDI_ASSERT(0);
26056 return WDI_STATUS_E_FAILURE;
26057 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026058
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026059 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026060
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026061 /*-----------------------------------------------------------------------
26062 Get message buffer
26063 -----------------------------------------------------------------------*/
26064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 usRcvPktFilterCfgSize,
26066 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026067 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26068 {
26069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026071 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 pEventData, pwdiSetRcvPktFilterReqInfo,
26073 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026074 WDI_ASSERT(0);
26075 wpalMemoryFree(pRcvPktFilterCfg);
26076 return WDI_STATUS_E_FAILURE;
26077 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026078
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026080 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026081 usSendSize,usRcvPktFilterCfgSize);
26082
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026083 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26084 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26085 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26086 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026087
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026089 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026093 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026094
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026095 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26096 {
26097 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26098 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26099 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26100 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26101 pRcvPktFilterCfg->paramsData[i].dataOffset =
26102 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26103 pRcvPktFilterCfg->paramsData[i].dataLength =
26104 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026105
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026106 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26108 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026109 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026110 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26111 8);
26112
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026114 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26117
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026119 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026120 pRcvPktFilterCfg->paramsData[i].dataOffset,
26121 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026124 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026125 pRcvPktFilterCfg->paramsData[i].compareData[0],
26126 pRcvPktFilterCfg->paramsData[i].compareData[1],
26127 pRcvPktFilterCfg->paramsData[i].compareData[2],
26128 pRcvPktFilterCfg->paramsData[i].compareData[3],
26129 pRcvPktFilterCfg->paramsData[i].compareData[4],
26130 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026133 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026134 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26135 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26136 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26137 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26138 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26139 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26140 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026141
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026142 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026143 pRcvPktFilterCfg,
26144 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026145
26146
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026147 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26148 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026151 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026152 wpalMemoryFree(pRcvPktFilterCfg);
26153 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026158 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026160}
26161
26162/**
26163 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026164
26165 @param pWDICtx: pointer to the WLAN DAL context
26166 pEventData: pointer to the event information structure
26167
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 @see
26169 @return Result of the function call
26170*/
26171WDI_Status
26172WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026173(
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 WDI_ControlBlockType* pWDICtx,
26175 WDI_EventInfoType* pEventData
26176)
26177{
26178 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26179 NULL;
26180 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26181 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 wpt_uint16 usDataOffset = 0;
26184 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026185 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26186 wpt_uint8 ucCurrentBSSSesIdx = 0;
26187 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188
26189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026190 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026191
26192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026194 -------------------------------------------------------------------------*/
26195 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026196 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026197 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026198 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26200 {
26201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 }
26206
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026207 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26208 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26209 &pBSSSes);
26210 if ( NULL == pBSSSes )
26211 {
26212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026213 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026214 return WDI_STATUS_E_FAILURE;
26215 }
26216
Jeff Johnson295189b2012-06-20 16:38:30 -070026217 /*-----------------------------------------------------------------------
26218 Get message buffer
26219 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26221 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026222 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026223 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026224 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 {
26226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26227 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026228 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026229 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26230 wdiFilterMatchCountCb);
26231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026233 }
26234
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026235 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26236 wpalMemoryCopy( pSendBuffer+usDataOffset,
26237 &rcvFltPktMatchCntReqParam,
26238 sizeof(rcvFltPktMatchCntReqParam));
26239
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 //
26241 // Don't need to fill send buffer other than header
26242 //
26243 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026245
26246
26247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26251 wdiFilterMatchCountCb,
26252 pEventData->pUserData,
26253 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026254}
26255
26256/**
26257 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026258
26259 @param pWDICtx: pointer to the WLAN DAL context
26260 pEventData: pointer to the event information structure
26261
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 @see
26263 @return Result of the function call
26264*/
26265WDI_Status
26266WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026267(
Jeff Johnson295189b2012-06-20 16:38:30 -070026268 WDI_ControlBlockType* pWDICtx,
26269 WDI_EventInfoType* pEventData
26270)
Jeff Johnsone7245742012-09-05 17:12:55 -070026271{
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26273 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 wpt_uint16 usDataOffset = 0;
26276 wpt_uint16 usSendSize = 0;
26277 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026278 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026279 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026280
26281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026282 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026283
26284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 -------------------------------------------------------------------------*/
26287 if (( NULL == pEventData ) ||
26288 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26289 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026290 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26292 {
26293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026296 return WDI_STATUS_E_FAILURE;
26297 }
26298
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026299 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26301 &pBSSSes);
26302 if ( NULL == pBSSSes )
26303 {
26304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026305 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 }
26308
26309 /*-----------------------------------------------------------------------
26310 Get message buffer
26311 -----------------------------------------------------------------------*/
26312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 sizeof(tHalRcvFltPktClearParam),
26315 &pSendBuffer, &usDataOffset, &usSendSize))||
26316 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26317 {
26318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26319 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026320 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 pEventData, pwdiRcvFltPktClearReqParamsType,
26322 wdiRcvFltPktClearFilterCb);
26323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 }
26326
26327
26328 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026329 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026330 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026331 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026332
Jeff Johnsone7245742012-09-05 17:12:55 -070026333 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26334 wpalMemoryCopy( pSendBuffer+usDataOffset,
26335 &rcvFltPktClearParam,
26336 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026337
26338 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026339 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026340
26341
26342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026343 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026347 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026348}
26349
26350/**
26351 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026352
26353 @param pWDICtx: pointer to the WLAN DAL context
26354 pEventData: pointer to the event information structure
26355
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 @see
26357 @return Result of the function call
26358*/
26359WDI_Status
26360WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026361(
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 WDI_ControlBlockType* pWDICtx,
26363 WDI_EventInfoType* pEventData
26364)
26365{
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 eHalStatus halStatus;
26367 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026368 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26369 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26371
26372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026373 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026374
26375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026377 -------------------------------------------------------------------------*/
26378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26379 ( NULL == pEventData->pEventData ))
26380 {
26381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026385 }
26386
Jeff Johnsone7245742012-09-05 17:12:55 -070026387 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026388
26389 /*-------------------------------------------------------------------------
26390 Extract response and send it to UMAC
26391 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026392 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26393 {
26394 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26395 pEventData->pEventData,
26396 sizeof(halRcvFltPktSetMcListRsp));
26397
26398 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26399 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26400 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26401 halRcvFltPktSetMcListRsp.bssIdx;
26402 }
26403 else
26404 {
26405 halStatus = *((eHalStatus*)pEventData->pEventData);
26406 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026408
26409 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026410 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026411
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026413}
26414
26415/**
26416 @brief Process Set Rsp function (called when a
26417 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026418
26419 @param pWDICtx: pointer to the WLAN DAL context
26420 pEventData: pointer to the event information structure
26421
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 @see
26423 @return Result of the function call
26424*/
26425WDI_Status
26426WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026427(
Jeff Johnson295189b2012-06-20 16:38:30 -070026428 WDI_ControlBlockType* pWDICtx,
26429 WDI_EventInfoType* pEventData
26430)
26431{
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 eHalStatus halStatus;
26433 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026434 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26435 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26437
26438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026439 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026440
26441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026443 -------------------------------------------------------------------------*/
26444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26445 ( NULL == pEventData->pEventData ))
26446 {
26447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026451 }
26452
26453 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026454 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026455
26456 /*-------------------------------------------------------------------------
26457 Extract response and send it to UMAC
26458 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026459 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26460 {
26461 wpalMemoryCopy( &halSetPktFilterRspParams,
26462 pEventData->pEventData,
26463 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026464
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026465 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26466 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26467 }
26468 else
26469 {
26470 halStatus = *((eHalStatus*)pEventData->pEventData);
26471 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26472 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026473 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026474 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
Jeff Johnsone7245742012-09-05 17:12:55 -070026476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026477}
26478
26479/**
26480 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026481
26482 @param pWDICtx: pointer to the WLAN DAL context
26483 pEventData: pointer to the event information structure
26484
Jeff Johnson295189b2012-06-20 16:38:30 -070026485 @see
26486 @return Result of the function call
26487*/
26488WDI_Status
26489WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026490(
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 WDI_ControlBlockType* pWDICtx,
26492 WDI_EventInfoType* pEventData
26493)
26494{
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026497 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26498 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026499
26500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26501
26502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026503 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026504
26505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 -------------------------------------------------------------------------*/
26508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26509 ( NULL == pEventData->pEventData ))
26510 {
26511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 }
26516
Jeff Johnsone7245742012-09-05 17:12:55 -070026517 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026518
26519 /*-------------------------------------------------------------------------
26520 Extract response and send it to UMAC
26521 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026522 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26523 {
26524 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26525 pEventData->pEventData,
26526 sizeof(halRcvFltrPktMatachRsp));
26527
26528 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26529 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26530 }
26531 else
26532 {
26533 halStatus = *((eHalStatus*)pEventData->pEventData);
26534 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26535 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026536
26537 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026538 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026539
Jeff Johnsone7245742012-09-05 17:12:55 -070026540 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026541}
26542
26543/**
26544 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026545
26546 @param pWDICtx: pointer to the WLAN DAL context
26547 pEventData: pointer to the event information structure
26548
Jeff Johnson295189b2012-06-20 16:38:30 -070026549 @see
26550 @return Result of the function call
26551*/
26552WDI_Status
26553WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026554(
Jeff Johnson295189b2012-06-20 16:38:30 -070026555 WDI_ControlBlockType* pWDICtx,
26556 WDI_EventInfoType* pEventData
26557)
26558{
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 eHalStatus halStatus;
26560 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026561 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26562 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26564
26565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026566 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026567
26568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 -------------------------------------------------------------------------*/
26571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26572 ( NULL == pEventData->pEventData ))
26573 {
26574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 }
26579
26580 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026581 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026582
26583 /*-------------------------------------------------------------------------
26584 Extract response and send it to UMAC
26585 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026586 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26587 {
26588 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26589 pEventData->pEventData,
26590 sizeof(halRcvFltPktClearRspMsg));
26591
26592 wdiRcvFltPktClearRspParamsType.wdiStatus =
26593 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26594 wdiRcvFltPktClearRspParamsType.bssIdx =
26595 halRcvFltPktClearRspMsg.bssIdx;
26596 }
26597 else
26598 {
26599 halStatus = *((eHalStatus*)pEventData->pEventData);
26600 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26601 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026602
26603 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026604 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026605
Jeff Johnsone7245742012-09-05 17:12:55 -070026606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026607}
26608#endif // WLAN_FEATURE_PACKET_FILTERING
26609
26610/**
26611 @brief Process Shutdown Rsp function
26612 There is no shutdown response comming from HAL
26613 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026614
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026616 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026617
26618 @see
26619 @return Result of the function call
26620*/
26621WDI_Status
26622WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026623(
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 WDI_ControlBlockType* pWDICtx,
26625 WDI_EventInfoType* pEventData
26626)
26627{
26628 /*There is no shutdown response comming from HAL - function just kept for
26629 simmetry */
26630 WDI_ASSERT(0);
26631 return WDI_STATUS_SUCCESS;
26632}/*WDI_ProcessShutdownRsp*/
26633
26634/**
26635 @brief WDI_SetPowerParamsReq
26636
Jeff Johnsone7245742012-09-05 17:12:55 -070026637 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026639
Jeff Johnson295189b2012-06-20 16:38:30 -070026640 wdiPowerParamsCb: callback for passing back the response
26641 of the Set Power Params operation received from the
26642 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026643
Jeff Johnson295189b2012-06-20 16:38:30 -070026644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026645 callback
26646
Jeff Johnson295189b2012-06-20 16:38:30 -070026647 @return Result of the function call
26648*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026650WDI_SetPowerParamsReq
26651(
26652 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26653 WDI_SetPowerParamsCb wdiPowerParamsCb,
26654 void* pUserData
26655)
26656{
26657 WDI_EventInfoType wdiEventData;
26658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26659
26660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026661 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026662 ------------------------------------------------------------------------*/
26663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26664 {
26665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26666 "WDI API call before module is initialized - Fail request");
26667
Jeff Johnsone7245742012-09-05 17:12:55 -070026668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026669 }
26670
26671 /*------------------------------------------------------------------------
26672 Fill in Event data and post to the Main FSM
26673 ------------------------------------------------------------------------*/
26674 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026675 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026676 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026677 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 wdiEventData.pUserData = pUserData;
26679
26680 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26681}/*WDI_SetPowerParamsReq*/
26682
26683/**
26684 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026685
26686 @param pWDICtx: pointer to the WLAN DAL context
26687 pEventData: pointer to the event information structure
26688
Jeff Johnson295189b2012-06-20 16:38:30 -070026689 @see
26690 @return Result of the function call
26691*/
26692WDI_Status
26693WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026694(
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 WDI_ControlBlockType* pWDICtx,
26696 WDI_EventInfoType* pEventData
26697)
26698{
26699 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26700 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026702 wpt_uint16 usDataOffset = 0;
26703 wpt_uint16 usSendSize = 0;
26704 tSetPowerParamsType powerParams;
26705
26706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 -------------------------------------------------------------------------*/
26709 if (( NULL == pEventData ) ||
26710 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26711 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26712 {
26713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026717 }
26718
26719 /*-----------------------------------------------------------------------
26720 Get message buffer
26721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026722 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026723 sizeof(powerParams),
26724 &pSendBuffer, &usDataOffset, &usSendSize))||
26725 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26726 {
26727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026728 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026732 }
26733
26734 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026735 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026736 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26737
26738 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026739 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026740 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26741
26742 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026743 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026744 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26745
26746 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026747 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026748 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26749
26750 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026751 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026752 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26753
26754 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026755 powerParams.uBETInterval =
26756 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026757
Yue Ma0da19492013-05-13 17:01:29 -070026758 /* MAX LI for modulated DTIM */
26759 powerParams.uMaxLIModulatedDTIM =
26760 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026761
26762 wpalMemoryCopy( pSendBuffer+usDataOffset,
26763 &powerParams,
26764 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026765
26766 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026767 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026768
26769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026770 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26773 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026774}
26775
26776/**
26777 @brief Process Power Params Rsp function (called when a
26778 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026779
26780 @param pWDICtx: pointer to the WLAN DAL context
26781 pEventData: pointer to the event information structure
26782
Jeff Johnson295189b2012-06-20 16:38:30 -070026783 @see
26784 @return Result of the function call
26785*/
26786WDI_Status
26787WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026788(
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 WDI_ControlBlockType* pWDICtx,
26790 WDI_EventInfoType* pEventData
26791)
26792{
26793 WDI_Status wdiStatus;
26794 eHalStatus halStatus;
26795 WDI_SetPowerParamsCb wdiPowerParamsCb;
26796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26797
26798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026800 -------------------------------------------------------------------------*/
26801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26802 ( NULL == pEventData->pEventData ))
26803 {
26804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026808 }
26809
Jeff Johnsone7245742012-09-05 17:12:55 -070026810 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026811
26812 /*-------------------------------------------------------------------------
26813 Extract response and send it to UMAC
26814 -------------------------------------------------------------------------*/
26815 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026816 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026817
26818 /*Notify UMAC*/
26819 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26820
Jeff Johnsone7245742012-09-05 17:12:55 -070026821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026822}/*WDI_ProcessSetPowerParamsRsp*/
26823
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026824/**
26825 @brief WDI_dhcpStartInd
26826 Host will send an event to the FW when DHCP is initiated
26827
26828 @param
26829 WDI_DHCPInd: DHCP Indication
26830 @see
26831 @return Result of the function call
26832*/
26833WDI_Status
26834WDI_dhcpStartInd
26835(
26836 WDI_DHCPInd *wdiDHCPInd
26837)
26838{
26839 WDI_EventInfoType wdiEventData;
26840
26841 /*------------------------------------------------------------------------
26842 Sanity Check
26843 ------------------------------------------------------------------------*/
26844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26845 {
26846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26847 "WDI API call before module is initialized - Fail request");
26848
26849 return WDI_STATUS_E_NOT_ALLOWED;
26850 }
26851
26852 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26853 wdiEventData.pEventData = wdiDHCPInd;
26854 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26855 wdiEventData.pCBfnc = NULL;
26856 wdiEventData.pUserData = NULL;
26857
26858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26859}
26860
26861
26862/**
26863 @brief WDI_dhcpStopInd
26864 Host will send an event to the FW when DHCP is completed
26865
26866 @param
26867 WDI_DHCPInd: DHCP Indication
26868 @see
26869 @return Result of the function call
26870*/
26871WDI_Status
26872WDI_dhcpStopInd
26873(
26874 WDI_DHCPInd *wdiDHCPInd
26875)
26876{
26877 WDI_EventInfoType wdiEventData;
26878
26879 /*------------------------------------------------------------------------
26880 Sanity Check
26881 ------------------------------------------------------------------------*/
26882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26883 {
26884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26885 "WDI API call before module is initialized - Fail request");
26886
26887 return WDI_STATUS_E_NOT_ALLOWED;
26888 }
26889
26890 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26891 wdiEventData.pEventData = wdiDHCPInd;
26892 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26893 wdiEventData.pCBfnc = NULL;
26894 wdiEventData.pUserData = NULL;
26895
26896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26897}
26898
26899
26900/**
26901 @brief Process DHCP Start Indication message and post it to HAL
26902
26903 @param pWDICtx: pointer to the WLAN DAL context
26904 pEventData: pointer to the event information structure
26905
26906 @see
26907 @return Result of the function call
26908*/
26909WDI_Status
26910WDI_ProcessDHCPStartInd
26911(
26912 WDI_ControlBlockType* pWDICtx,
26913 WDI_EventInfoType* pEventData
26914)
26915{
26916 wpt_uint8* pSendBuffer = NULL;
26917 wpt_uint16 usDataOffset = 0;
26918 wpt_uint16 usSendSize = 0;
26919 wpt_uint16 usLen = 0;
26920 WDI_DHCPInd* pwdiDHCPInd = NULL;
26921 tDHCPInfo* pDHCPInfo;
26922
26923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26924
26925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26926 "%s", __func__);
26927
26928 /*-------------------------------------------------------------------------
26929 Sanity check
26930 -------------------------------------------------------------------------*/
26931 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26932 {
26933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26934 "%s: Invalid parameters", __func__);
26935 WDI_ASSERT(0);
26936 return WDI_STATUS_E_FAILURE;
26937 }
26938 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26939 /*-----------------------------------------------------------------------
26940 Get message buffer
26941 -----------------------------------------------------------------------*/
26942
26943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26944 WDI_DHCP_START_IND,
26945 sizeof(tDHCPInfo),
26946 &pSendBuffer, &usDataOffset, &usSendSize))||
26947 ( usSendSize < (usDataOffset + usLen )))
26948 {
26949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26950 "Unable to get send buffer in DHCP Start req %p ",
26951 pEventData);
26952 WDI_ASSERT(0);
26953 return WDI_STATUS_E_FAILURE;
26954 }
26955
26956 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26957 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26958 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26959 WDI_MAC_ADDR_LEN);
26960
26961 pWDICtx->pReqStatusUserData = NULL;
26962 pWDICtx->pfncRspCB = NULL;
26963
26964 /*-------------------------------------------------------------------------
26965 Send DHCP Start Indication to HAL
26966 -------------------------------------------------------------------------*/
26967 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26968
26969}/*WDI_ProcessDHCPStartInd*/
26970
26971/**
26972 @brief Process DHCP Stop indication message and post it to HAL
26973
26974 @param pWDICtx: pointer to the WLAN DAL context
26975 pEventData: pointer to the event information structure
26976
26977 @see
26978 @return Result of the function call
26979*/
26980WDI_Status
26981WDI_ProcessDHCPStopInd
26982(
26983 WDI_ControlBlockType* pWDICtx,
26984 WDI_EventInfoType* pEventData
26985)
26986{
26987 wpt_uint8* pSendBuffer = NULL;
26988 wpt_uint16 usDataOffset = 0;
26989 wpt_uint16 usSendSize = 0;
26990 wpt_uint16 usLen = 0;
26991 WDI_DHCPInd* pwdiDHCPInd = NULL;
26992 tDHCPInfo* pDHCPInfo;
26993
26994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26995
26996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26997 "%s", __func__);
26998
26999 /*-------------------------------------------------------------------------
27000 Sanity check
27001 -------------------------------------------------------------------------*/
27002
27003 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27004 {
27005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27006 "%s: Invalid parameters", __func__);
27007 WDI_ASSERT(0);
27008 return WDI_STATUS_E_FAILURE;
27009 }
27010 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27011 /*-----------------------------------------------------------------------
27012 Get message buffer
27013 -----------------------------------------------------------------------*/
27014
27015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27016 WDI_DHCP_STOP_IND,
27017 sizeof(tDHCPInfo),
27018 &pSendBuffer, &usDataOffset, &usSendSize))||
27019 ( usSendSize < (usDataOffset + usLen )))
27020 {
27021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27022 "Unable to get send buffer in DHCP Start req %p ",
27023 pEventData);
27024 WDI_ASSERT(0);
27025 return WDI_STATUS_E_FAILURE;
27026 }
27027
27028 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27029 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27030 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27031 WDI_MAC_ADDR_LEN);
27032
27033 pWDICtx->pReqStatusUserData = NULL;
27034 pWDICtx->pfncRspCB = NULL;
27035 /*-------------------------------------------------------------------------
27036 Send DHCP Stop indication to HAL
27037 -------------------------------------------------------------------------*/
27038 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27039
27040}/*WDI_ProcessDHCPStopInd*/
27041
27042
Jeff Johnson295189b2012-06-20 16:38:30 -070027043#ifdef WLAN_FEATURE_GTK_OFFLOAD
27044/**
27045 @brief WDI_GTKOffloadReq will be called when the upper MAC
27046 wants to set GTK Rekey Counter while in power save. Upon
27047 the call of this API the WLAN DAL will pack and send a
27048 HAL GTK offload request message to the lower RIVA
27049 sub-system if DAL is in state STARTED.
27050
27051 In state BUSY this request will be queued. Request won't
27052 be allowed in any other state.
27053
27054 WDI_PostAssocReq must have been called.
27055
27056 @param pwdiGtkOffloadParams: the GTK offload as specified
27057 by the Device Interface
27058
27059 wdiGtkOffloadCb: callback for passing back the response
27060 of the GTK offload operation received from the device
27061
27062 pUserData: user data will be passed back with the
27063 callback
27064
27065 @see WDI_PostAssocReq
27066 @return Result of the function call
27067*/
27068WDI_Status
27069WDI_GTKOffloadReq
27070(
27071 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27072 WDI_GtkOffloadCb wdiGtkOffloadCb,
27073 void* pUserData
27074)
27075{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027076 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27078
27079 /*------------------------------------------------------------------------
27080 Sanity Check
27081 ------------------------------------------------------------------------*/
27082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27083 {
27084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27085 "WDI API call before module is initialized - Fail request");
27086
27087 return WDI_STATUS_E_NOT_ALLOWED;
27088 }
27089
27090 /*------------------------------------------------------------------------
27091 Fill in Event data and post to the Main FSM
27092 ------------------------------------------------------------------------*/
27093 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27094 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027095 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27097 wdiEventData.pUserData = pUserData;
27098
27099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27100}
27101
27102
27103/**
27104 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27105 MAC wants to get GTK Rekey Counter while in power save.
27106 Upon the call of this API the WLAN DAL will pack and
27107 send a HAL GTK offload request message to the lower RIVA
27108 sub-system if DAL is in state STARTED.
27109
27110 In state BUSY this request will be queued. Request won't
27111 be allowed in any other state.
27112
27113 WDI_PostAssocReq must have been called.
27114
27115 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27116 Information Message as specified by the
27117 Device Interface
27118
27119 wdiGtkOffloadGetInfoCb: callback for passing back the
27120 response of the GTK offload operation received from the
27121 device
27122
27123 pUserData: user data will be passed back with the
27124 callback
27125
27126 @see WDI_PostAssocReq
27127 @return Result of the function call
27128*/
27129WDI_Status
27130WDI_GTKOffloadGetInfoReq
27131(
27132 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27133 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27134 void* pUserData
27135)
27136{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027137 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27139
27140 /*------------------------------------------------------------------------
27141 Sanity Check
27142 ------------------------------------------------------------------------*/
27143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27144 {
27145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27146 "WDI API call before module is initialized - Fail request");
27147
27148 return WDI_STATUS_E_NOT_ALLOWED;
27149 }
27150
27151 /*------------------------------------------------------------------------
27152 Fill in Event data and post to the Main FSM
27153 ------------------------------------------------------------------------*/
27154 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27155 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27156 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27157 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27158 wdiEventData.pUserData = pUserData;
27159
27160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27161}
27162
27163
27164/**
27165 @brief Process set GTK Offload Request function
27166
27167 @param pWDICtx: pointer to the WLAN DAL context
27168 pEventData: pointer to the event information structure
27169
27170 @see
27171 @return Result of the function call
27172*/
27173WDI_Status
27174WDI_ProcessGTKOffloadReq
27175(
27176 WDI_ControlBlockType* pWDICtx,
27177 WDI_EventInfoType* pEventData
27178)
27179{
27180 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27181 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27182 wpt_uint8* pSendBuffer = NULL;
27183 wpt_uint16 usDataOffset = 0;
27184 wpt_uint16 usSendSize = 0;
27185 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027186 wpt_uint8 ucCurrentSessionId = 0;
27187 WDI_BSSSessionType* pBSSSes = NULL;
27188
Jeff Johnson295189b2012-06-20 16:38:30 -070027189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27190
27191 /*-------------------------------------------------------------------------
27192 Sanity check
27193 -------------------------------------------------------------------------*/
27194 if (( NULL == pEventData ) ||
27195 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27196 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27197 {
27198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027201 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027202 }
27203
27204 /*-----------------------------------------------------------------------
27205 Get message buffer
27206 -----------------------------------------------------------------------*/
27207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27208 sizeof(gtkOffloadReqParams),
27209 &pSendBuffer, &usDataOffset, &usSendSize))||
27210 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27211 {
27212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027213 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27215 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027216 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027217 }
27218
27219 //
27220 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27221 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027222 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27223 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27224 &pBSSSes);
27225 if ( NULL == pBSSSes )
27226 {
27227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027228 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027229 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027230 }
27231
27232 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27233
Jeff Johnson295189b2012-06-20 16:38:30 -070027234 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27235 // Copy KCK
27236 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27237 // Copy KEK
27238 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27239 // Copy KeyReplayCounter
27240 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27241
27242 wpalMemoryCopy( pSendBuffer+usDataOffset,
27243 &gtkOffloadReqParams,
27244 sizeof(gtkOffloadReqParams));
27245
27246 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27247 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27248
27249 /*-------------------------------------------------------------------------
27250 Send Get STA Request to HAL
27251 -------------------------------------------------------------------------*/
27252 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27253 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027254
27255fail:
27256 // Release the message buffer so we don't leak
27257 wpalMemoryFree(pSendBuffer);
27258
27259failRequest:
27260 //WDA should have failure check to avoid the memory leak
27261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027262}
27263
27264
27265/**
27266 @brief Process GTK Offload Get Information Request function
27267
27268 @param pWDICtx: pointer to the WLAN DAL context
27269 pEventData: pointer to the event information structure
27270
27271 @see
27272 @return Result of the function call
27273*/
27274WDI_Status
27275WDI_ProcessGTKOffloadGetInfoReq
27276(
27277 WDI_ControlBlockType* pWDICtx,
27278 WDI_EventInfoType* pEventData
27279)
27280{
27281 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27282 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27283 wpt_uint8* pSendBuffer = NULL;
27284 wpt_uint16 usDataOffset = 0;
27285 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027286 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27287 wpt_uint8 ucCurrentSessionId = 0;
27288 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027289
27290 /*-------------------------------------------------------------------------
27291 Sanity check
27292 -------------------------------------------------------------------------*/
27293 if (( NULL == pEventData ) ||
27294 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27295 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27296 {
27297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027299 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027300 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027301 }
27302
27303 /*-----------------------------------------------------------------------
27304 Get message buffer
27305 -----------------------------------------------------------------------*/
27306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027307 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027309 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 {
27311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027312 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27314 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027315 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027316 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027317 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27318 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27319 &pBSSSes);
27320 if ( NULL == pBSSSes )
27321 {
27322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027323 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027324 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027325 }
27326 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027327
27328 //
27329 // Don't need to fill send buffer other than header
27330 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027331 wpalMemoryCopy( pSendBuffer+usDataOffset,
27332 &halGtkOffloadGetInfoReqParams,
27333 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027334
27335 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27336 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27337
27338 /*-------------------------------------------------------------------------
27339 Send Get STA Request to HAL
27340 -------------------------------------------------------------------------*/
27341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27342 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027343fail:
27344 // Release the message buffer so we don't leak
27345 wpalMemoryFree(pSendBuffer);
27346
27347failRequest:
27348 //WDA should have failure check to avoid the memory leak
27349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027350}
27351
27352/**
27353 @brief Process host offload Rsp function (called when a
27354 response is being received over the bus from HAL)
27355
27356 @param pWDICtx: pointer to the WLAN DAL context
27357 pEventData: pointer to the event information structure
27358
27359 @see
27360 @return Result of the function call
27361*/
27362WDI_Status
27363WDI_ProcessGtkOffloadRsp
27364(
27365 WDI_ControlBlockType* pWDICtx,
27366 WDI_EventInfoType* pEventData
27367)
27368{
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 eHalStatus halStatus;
27370 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027371 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27372 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373
27374 /*-------------------------------------------------------------------------
27375 Sanity check
27376 -------------------------------------------------------------------------*/
27377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27378 ( NULL == pEventData->pEventData))
27379 {
27380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 WDI_ASSERT(0);
27383 return WDI_STATUS_E_FAILURE;
27384 }
27385
Wilson Yangcf2cf012013-10-10 23:13:38 -070027386 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27387
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 /*-------------------------------------------------------------------------
27389 Extract response and send it to UMAC
27390 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027391 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27392 {
27393 wpalMemoryCopy( &halGtkOffloadRspParams,
27394 pEventData->pEventData,
27395 sizeof(halGtkOffloadRspParams));
27396
27397 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027398 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027399 wdiGtkOffloadRsparams.bssIdx =
27400 halGtkOffloadRspParams.bssIdx;
27401 }
27402 else
27403 {
27404 halStatus = *((eHalStatus*)pEventData->pEventData);
27405 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27406 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027407
27408 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027409 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027410
27411 return WDI_STATUS_SUCCESS;
27412}
27413
27414/**
27415 @brief Process GTK Offload Get Information Response function
27416
27417 @param pWDICtx: pointer to the WLAN DAL context
27418 pEventData: pointer to the event information structure
27419
27420 @see
27421 @return Result of the function call
27422*/
27423WDI_Status
27424WDI_ProcessGTKOffloadGetInfoRsp
27425(
27426 WDI_ControlBlockType* pWDICtx,
27427 WDI_EventInfoType* pEventData
27428)
27429{
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027431 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027432 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27433 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027434 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027435
Jeff Johnson295189b2012-06-20 16:38:30 -070027436
27437 /*-------------------------------------------------------------------------
27438 Sanity check
27439 -------------------------------------------------------------------------*/
27440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27441 ( NULL == pEventData->pEventData ))
27442 {
27443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027445 WDI_ASSERT(0);
27446 return WDI_STATUS_E_FAILURE;
27447 }
27448
Wilson Yangcf2cf012013-10-10 23:13:38 -070027449 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27450
27451 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 Extract response and send it to UMAC
27453 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027454 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27455 {
27456 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27457 pEventData->pEventData,
27458 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027459
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027460 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027461 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027462 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27463 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27464 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27465 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27466 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27467 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27468 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27469 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027470
27471 wpalMutexAcquire(&pWDICtx->wptMutex);
27472 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27473 &pBSSSes);
27474
27475 if ( NULL == pBSSSes )
27476 {
27477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27478 "Association sequence for this BSS does not exist or "
27479 "association no longer in progress - mysterious HAL response");
27480 wpalMutexRelease(&pWDICtx->wptMutex);
27481 return WDI_STATUS_E_NOT_ALLOWED;
27482 }
27483
27484 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27485 sizeof (wpt_macAddr));
27486 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 }
27488 else
27489 {
27490 halStatus = *((eHalStatus*)pEventData->pEventData);
27491 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27492 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027493 /*Notify UMAC*/
27494 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27495 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027496 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027497
27498 return WDI_STATUS_SUCCESS;
27499}
27500#endif // WLAN_FEATURE_GTK_OFFLOAD
27501
27502#ifdef WLAN_WAKEUP_EVENTS
27503WDI_Status
27504WDI_ProcessWakeReasonInd
27505(
27506 WDI_ControlBlockType* pWDICtx,
27507 WDI_EventInfoType* pEventData
27508)
27509{
27510 WDI_LowLevelIndType *pWdiInd;
27511 tpWakeReasonParams pWakeReasonParams;
27512 wpt_uint32 allocSize = 0;
27513
27514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027515 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027516
27517 /*-------------------------------------------------------------------------
27518 Sanity check
27519 -------------------------------------------------------------------------*/
27520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27521 ( NULL == pEventData->pEventData ))
27522 {
27523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 WDI_ASSERT( 0 );
27526 return WDI_STATUS_E_FAILURE;
27527 }
27528
27529 /*-------------------------------------------------------------------------
27530 Extract indication and send it to UMAC
27531 -------------------------------------------------------------------------*/
27532 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27533
27534 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27535
27536 //Allocate memory for WDI_WakeReasonIndType structure
27537 pWdiInd = wpalMemoryAllocate(allocSize) ;
27538
27539 if(NULL == pWdiInd)
27540 {
27541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027542 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027543 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027544 WDI_ASSERT(0);
27545 return WDI_STATUS_E_FAILURE;
27546 }
27547
27548 wpalMemoryZero(pWdiInd, allocSize);
27549
27550 /* Fill in the indication parameters*/
27551 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27552 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27553 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27554 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27555 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27556 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27557 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27558 &(pWakeReasonParams->aDataStart[0]),
27559 pWakeReasonParams->ulStoredDataLen);
27560
ltimariu034f7d62013-01-24 18:54:33 -080027561
27562 if ( pWDICtx->wdiLowLevelIndCB )
27563 {
27564 /*Notify UMAC*/
27565 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027567
27568 //Free memory allocated for WDI_WakeReasonIndType structure
27569 wpalMemoryFree(pWdiInd);
27570
27571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027572 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027573
27574 return WDI_STATUS_SUCCESS;
27575}
27576#endif // WLAN_WAKEUP_EVENTS
27577
27578void WDI_GetWcnssCompiledApiVersion
27579(
27580 WDI_WlanVersionType *pWcnssApiVersion
27581)
27582{
27583 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27584 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27585 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27586 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27587}
27588
27589/**
27590 @brief Process Set TM Level Rsp function (called when a
27591 response is being received over the bus from HAL)
27592
27593 @param pWDICtx: pointer to the WLAN DAL context
27594 pEventData: pointer to the event information structure
27595
27596 @see
27597 @return Result of the function call
27598*/
27599WDI_Status
27600WDI_ProcessSetTmLevelRsp
27601(
27602 WDI_ControlBlockType* pWDICtx,
27603 WDI_EventInfoType* pEventData
27604)
27605{
27606 WDI_Status wdiStatus;
27607 eHalStatus halStatus;
27608 WDI_SetTmLevelCb wdiSetTmLevelCb;
27609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27610
27611 /*-------------------------------------------------------------------------
27612 Sanity check
27613 -------------------------------------------------------------------------*/
27614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27615 ( NULL == pEventData->pEventData ))
27616 {
27617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027619 WDI_ASSERT(0);
27620 return WDI_STATUS_E_FAILURE;
27621 }
27622
27623 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27624
27625 /*-------------------------------------------------------------------------
27626 Extract response and send it to UMAC
27627 -------------------------------------------------------------------------*/
27628 halStatus = *((eHalStatus*)pEventData->pEventData);
27629 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27630
27631 /*Notify UMAC*/
27632 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27633
27634 return WDI_STATUS_SUCCESS;
27635}/*WDI_ProcessSetTmLevelRsp*/
27636
27637/**
27638 @brief Process Set Thermal Mitigation level Changed request
27639
27640 @param pWDICtx: pointer to the WLAN DAL context
27641 pEventData: pointer to the event information structure
27642
27643 @see
27644 @return Result of the function call
27645*/
27646WDI_Status
27647WDI_ProcessSetTmLevelReq
27648(
27649 WDI_ControlBlockType* pWDICtx,
27650 WDI_EventInfoType* pEventData
27651)
27652{
27653 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27654 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27655 wpt_uint8* pSendBuffer = NULL;
27656 wpt_uint16 usDataOffset = 0;
27657 wpt_uint16 usSendSize = 0;
27658 tSetThermalMitgationType halTmMsg;
27659
27660 /*-------------------------------------------------------------------------
27661 Sanity check
27662 -------------------------------------------------------------------------*/
27663 if (( NULL == pEventData ) ||
27664 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27665 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27666 {
27667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027669 WDI_ASSERT(0);
27670 return WDI_STATUS_E_FAILURE;
27671 }
27672
27673 /*-----------------------------------------------------------------------
27674 Get message buffer
27675 -----------------------------------------------------------------------*/
27676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27677 sizeof(halTmMsg),
27678 &pSendBuffer, &usDataOffset, &usSendSize))||
27679 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27680 {
27681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027682 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27684 WDI_ASSERT(0);
27685 return WDI_STATUS_E_FAILURE;
27686 }
27687
27688 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27689 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27690
27691 wpalMemoryCopy( pSendBuffer+usDataOffset,
27692 &halTmMsg,
27693 sizeof(halTmMsg));
27694
27695 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27696 pWDICtx->pfncRspCB = NULL;
27697 /*-------------------------------------------------------------------------
27698 Send Get STA Request to HAL
27699 -------------------------------------------------------------------------*/
27700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27701 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27702}
27703
27704/* Fill the value from the global features enabled array to the global capabilities
27705 * bitmap struct
27706 */
27707static void
27708FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27709{
27710 wpt_int8 i;
27711 for (i=0; i<len; i++)
27712 {
27713 setFeatCaps(fCaps, enabledFeat[i]);
27714 }
27715}
27716
27717/**
27718 @brief WDI_featureCapsExchangeReq
27719 Post feature capability bitmap exchange event.
27720 Host will send its own capability to FW in this req and
27721 expect FW to send its capability back as a bitmap in Response
27722
27723 @param
27724
27725 wdiFeatureCapsExchangeCb: callback called on getting the response.
27726 It is kept to mantain similarity between WDI reqs and if needed, can
27727 be used in future. Currently, It is set to NULL
27728
27729 pUserData: user data will be passed back with the
27730 callback
27731
27732 @see
27733 @return Result of the function call
27734*/
27735WDI_Status
27736WDI_featureCapsExchangeReq
27737(
27738 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27739 void* pUserData
27740)
27741{
27742 WDI_EventInfoType wdiEventData;
27743 wpt_int32 fCapsStructSize;
27744
27745 /*------------------------------------------------------------------------
27746 Sanity Check
27747 ------------------------------------------------------------------------*/
27748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27749 {
27750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27751 "WDI API call before module is initialized - Fail request");
27752
27753 return WDI_STATUS_E_NOT_ALLOWED;
27754 }
27755
27756 /* Allocate memory separately for global variable carrying FW caps */
27757 fCapsStructSize = sizeof(tWlanFeatCaps);
27758 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27759 if ( NULL == gpHostWlanFeatCaps )
27760 {
27761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027762 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 WDI_ASSERT(0);
27764 return WDI_STATUS_MEM_FAILURE;
27765 }
27766
27767 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27768
27769 /*------------------------------------------------------------------------
27770 Fill in Event data and post to the Main FSM
27771 ------------------------------------------------------------------------*/
27772 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27773 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027775 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 gpHostWlanFeatCaps->featCaps[0],
27777 gpHostWlanFeatCaps->featCaps[1],
27778 gpHostWlanFeatCaps->featCaps[2],
27779 gpHostWlanFeatCaps->featCaps[3]
27780 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27782 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27784 wdiEventData.pEventData = gpHostWlanFeatCaps;
27785 wdiEventData.uEventDataSize = fCapsStructSize;
27786 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27787 wdiEventData.pUserData = pUserData;
27788
27789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27790}
27791
27792/**
Yathishd8713192012-12-10 14:21:35 -080027793 @brief Disable Active mode offload in Host
27794
27795 @param void
27796 @see
27797 @return void
27798*/
27799void
27800WDI_disableCapablityFeature(wpt_uint8 feature_index)
27801{
27802 supportEnabledFeatures[feature_index] = 0;
27803 return;
27804}
27805
27806/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027807 @brief Process Host-FW Capability Exchange Request function
27808
27809 @param pWDICtx: pointer to the WLAN DAL context
27810 pEventData: pointer to the event information structure
27811
27812 @see
27813 @return Result of the function call
27814*/
27815WDI_Status
27816WDI_ProcessFeatureCapsExchangeReq
27817(
27818 WDI_ControlBlockType* pWDICtx,
27819 WDI_EventInfoType* pEventData
27820)
27821{
27822 wpt_uint8* pSendBuffer = NULL;
27823 wpt_uint16 usDataOffset = 0;
27824 wpt_uint16 usSendSize = 0;
27825 wpt_uint16 usLen = 0;
27826
27827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27828
27829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027830 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027831
27832 /*-------------------------------------------------------------------------
27833 Sanity check
27834 -------------------------------------------------------------------------*/
27835 /* Call back function is NULL since not required for cap exchange req */
27836 if (( NULL == pEventData ) ||
27837 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27838 {
27839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027841 WDI_ASSERT(0);
27842 return WDI_STATUS_E_FAILURE;
27843 }
27844
27845 /*-----------------------------------------------------------------------
27846 Get message buffer
27847 -----------------------------------------------------------------------*/
27848 usLen = sizeof(tWlanFeatCaps);
27849
27850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27851 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27852 usLen,
27853 &pSendBuffer, &usDataOffset, &usSendSize))||
27854 ( usSendSize < (usDataOffset + usLen )))
27855 {
27856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027857 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27859 WDI_ASSERT(0);
27860 return WDI_STATUS_E_FAILURE;
27861 }
27862
27863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027864 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027865 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27866 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27867 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27868 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27869 );
27870
27871 /* Copy host caps after the offset in the send buffer */
27872 wpalMemoryCopy( pSendBuffer+usDataOffset,
27873 (tWlanFeatCaps *)pEventData->pEventData,
27874 usLen);
27875
27876 /*-------------------------------------------------------------------------
27877 Send Start Request to HAL
27878 -------------------------------------------------------------------------*/
27879 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27880 (WDI_StartRspCb)pEventData->pCBfnc,
27881 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27882
27883}/*WDI_ProcessFeatureCapsExchangeReq*/
27884
27885/**
27886 @brief Process Host-FW Capability Exchange Response function
27887
27888 @param pWDICtx: pointer to the WLAN DAL context
27889 pEventData: pointer to the event information structure
27890
27891 @see
27892 @return Result of the function call
27893*/
27894WDI_Status
27895WDI_ProcessFeatureCapsExchangeRsp
27896(
27897 WDI_ControlBlockType* pWDICtx,
27898 WDI_EventInfoType* pEventData
27899)
27900{
27901 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27902 wpt_int32 fCapsStructSize;
27903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27904
27905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027906 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027907
27908 /*-------------------------------------------------------------------------
27909 Sanity check
27910 -------------------------------------------------------------------------*/
27911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27912 ( NULL == pEventData->pEventData ))
27913 {
27914 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 WDI_ASSERT(0);
27918 return WDI_STATUS_E_FAILURE;
27919 }
27920
27921 /* Allocate memory separately for global variable carrying FW caps */
27922 fCapsStructSize = sizeof(tWlanFeatCaps);
27923 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27924 if ( NULL == gpFwWlanFeatCaps )
27925 {
27926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027927 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 WDI_ASSERT(0);
27929 return WDI_STATUS_MEM_FAILURE;
27930 }
27931
27932 /*-------------------------------------------------------------------------
27933 Unpack HAL Response Message - the header was already extracted by the
27934 main Response Handling procedure
27935 -------------------------------------------------------------------------*/
27936 /*-------------------------------------------------------------------------
27937 Extract response and send it to UMAC
27938 -------------------------------------------------------------------------*/
27939
27940 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27941 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027943 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027944 gpFwWlanFeatCaps->featCaps[0],
27945 gpFwWlanFeatCaps->featCaps[1],
27946 gpFwWlanFeatCaps->featCaps[2],
27947 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027948 );
27949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27950 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027951 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27952
27953 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27954 if (wdiFeatureCapsExchangeCb != NULL)
27955 wdiFeatureCapsExchangeCb(NULL, NULL);
27956
27957 return WDI_STATUS_SUCCESS;
27958}
27959
Mohit Khanna4a70d262012-09-11 16:30:12 -070027960#ifdef WLAN_FEATURE_11AC
27961WDI_Status
27962WDI_ProcessUpdateVHTOpModeRsp
27963(
27964 WDI_ControlBlockType* pWDICtx,
27965 WDI_EventInfoType* pEventData
27966)
27967{
27968 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27969 WDI_Status wdiStatus;
27970 eHalStatus halStatus;
27971
27972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27973
27974 /*-------------------------------------------------------------------------
27975 Sanity check
27976 -------------------------------------------------------------------------*/
27977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27978 ( NULL == pEventData->pEventData))
27979 {
27980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027981 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027982 WDI_ASSERT(0);
27983 return WDI_STATUS_E_FAILURE;
27984 }
27985 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27986
27987 /*-------------------------------------------------------------------------
27988 Extract response and send it to UMAC
27989 -------------------------------------------------------------------------*/
27990 halStatus = *((eHalStatus*)pEventData->pEventData);
27991 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27992
27993 /*Notify UMAC*/
27994 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27995
27996 return WDI_STATUS_SUCCESS;
27997}
27998#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027999/**
28000 @brief WDI_getHostWlanFeatCaps
28001 WDI API that returns whether the feature passed to it as enum value in
28002 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28003 variable storing host capability bitmap to find this. This can be used by
28004 other moduels to decide certain things like call different APIs based on
28005 whether a particular feature is supported.
28006
28007 @param
28008
28009 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28010
28011 @see
28012 @return
28013 0 - if the feature is NOT supported in host
28014 any non-zero value - if the feature is SUPPORTED in host.
28015*/
28016wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28017{
28018 wpt_uint8 featSupported = 0;
28019 if (gpHostWlanFeatCaps != NULL)
28020 {
28021 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28022 }
28023 else
28024 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028026 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 }
28028 return featSupported;
28029}
28030
28031/**
28032 @brief WDI_getFwWlanFeatCaps
28033 WDI API that returns whether the feature passed to it as enum value in
28034 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28035 variable storing host capability bitmap to find this. This can be used by
28036 other moduels to decide certain things like call different APIs based on
28037 whether a particular feature is supported.
28038
28039 @param
28040
28041 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28042 in wlan_hal_msg.h.
28043
28044 @see
28045 @return
28046 0 - if the feature is NOT supported in FW
28047 any non-zero value - if the feature is SUPPORTED in FW.
28048*/
28049wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28050{
28051 wpt_uint8 featSupported = 0;
28052 if (gpFwWlanFeatCaps != NULL)
28053 {
28054 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28055 }
28056 else
28057 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028059 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028060 }
28061 return featSupported;
28062}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028063
28064#ifdef WLAN_FEATURE_11AC
28065WDI_Status
28066WDI_ProcessUpdateVHTOpModeReq
28067(
28068 WDI_ControlBlockType* pWDICtx,
28069 WDI_EventInfoType* pEventData
28070)
28071{
28072 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28073 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28074 wpt_uint8* pSendBuffer = NULL;
28075 wpt_uint16 usDataOffset = 0;
28076 wpt_uint16 usSendSize = 0;
28077
28078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28079
28080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028081 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028082
28083 /*-------------------------------------------------------------------------
28084 Sanity check
28085 -------------------------------------------------------------------------*/
28086 if (( NULL == pEventData ) ||
28087 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28088 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28089 {
28090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028091 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028092 WDI_ASSERT(0);
28093 return WDI_STATUS_E_FAILURE;
28094 }
28095
28096 /*-----------------------------------------------------------------------
28097 Get message buffer
28098 -----------------------------------------------------------------------*/
28099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28100 sizeof(WDI_UpdateVHTOpMode),
28101 &pSendBuffer, &usDataOffset, &usSendSize))||
28102 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28103 {
28104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28105 "Unable to get send buffer in update vht opMode req");
28106 WDI_ASSERT(0);
28107 return WDI_STATUS_E_FAILURE;
28108 }
28109
28110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028111 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028112
28113 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28114 sizeof(WDI_UpdateVHTOpMode));
28115
28116 /*-------------------------------------------------------------------------
28117 Send Start Request to HAL
28118 -------------------------------------------------------------------------*/
28119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28120 wdiVHTOpModeCb,
28121 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28122
28123}
28124
28125WDI_Status
28126WDI_UpdateVHTOpModeReq
28127(
28128 WDI_UpdateVHTOpMode *pData,
28129 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28130 void* pUserData
28131)
28132{
28133 WDI_EventInfoType wdiEventData;
28134
28135 /*------------------------------------------------------------------------
28136 Sanity Check
28137 ------------------------------------------------------------------------*/
28138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28139 {
28140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28141 "WDI API call before module is initialized - Fail request");
28142
28143 return WDI_STATUS_E_NOT_ALLOWED;
28144 }
28145
28146 /*------------------------------------------------------------------------
28147 Fill in Event data and post to the Main FSM
28148 ------------------------------------------------------------------------*/
28149 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28150 wdiEventData.pEventData = pData;
28151 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28152 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28153 wdiEventData.pUserData = pUserData;
28154
28155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028156 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028157
28158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28159
28160}
28161#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028162
28163/**
28164 @brief WDI_TransportChannelDebug -
28165 Display DXE Channel debugging information
28166 User may request to display DXE channel snapshot
28167 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028168
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028169 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028170 @param enableStallDetect : Enable stall detect feature
28171 This feature will take effect to data performance
28172 Not integrate till fully verification
28173 @see
28174 @return none
28175*/
28176void WDI_TransportChannelDebug
28177(
28178 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028179 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028180)
28181{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028182 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028183 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028184}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028185/**
28186 @brief WDI_SsrTimerCB
28187 Callback function for SSR timer, if this is called then the graceful
28188 shutdown for Riva did not happen.
28189
28190 @param pUserData : user data to timer
28191
28192 @see
28193 @return none
28194*/
28195void
28196WDI_SsrTimerCB
28197(
28198 void *pUserData
28199)
28200{
28201 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28203
28204 if (NULL == pWDICtx )
28205 {
28206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028207 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028208 WDI_ASSERT(0);
28209 return;
28210 }
28211 wpalRivaSubystemRestart();
28212
28213 return;
28214
28215}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028216
28217/**
28218 @brief WDI_SetEnableSSR -
28219 This API is called to enable/disable SSR on WDI timeout.
28220
28221 @param enableSSR : enable/disable SSR
28222
28223 @see
28224 @return none
28225*/
28226void WDI_SetEnableSSR(wpt_boolean enableSSR)
28227{
28228 gWDICb.bEnableSSR = enableSSR;
28229}
Leo Chang00bc9132013-08-01 19:21:11 -070028230
28231
28232#ifdef FEATURE_WLAN_LPHB
28233/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028234 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028235 This function will be invoked when FW detects low power
28236 heart beat failure
28237
28238 @param pWDICtx : wdi context
28239 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028240 @see
28241 @return Result of the function call
28242*/
28243WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028244WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028245(
28246 WDI_ControlBlockType* pWDICtx,
28247 WDI_EventInfoType* pEventData
28248)
28249{
28250 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028251 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28253
28254 /*-------------------------------------------------------------------------
28255 Sanity check
28256 -------------------------------------------------------------------------*/
28257 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28258 (NULL == pEventData->pEventData))
28259 {
28260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28261 "%s: Invalid parameters", __func__);
28262 WDI_ASSERT(0);
28263 return WDI_STATUS_E_FAILURE;
28264 }
28265
28266 /*-------------------------------------------------------------------------
28267 Extract indication and send it to UMAC
28268 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028269 wpalMemoryCopy(&lphbIndicationParam,
28270 pEventData->pEventData,
28271 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028272
Leo Chang8d19a5f2013-09-26 13:32:26 -070028273 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028274 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028275 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028276 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028277 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028278 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028279 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028280 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028281 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028282 /*Notify UMAC*/
28283 if (pWDICtx->wdiLowLevelIndCB)
28284 {
28285 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28286 }
28287
28288 return WDI_STATUS_SUCCESS;
28289}
28290
28291/**
28292 @brief WDI_ProcessLphbCfgRsp -
28293 LPHB configuration response from FW
28294
28295 @param pWDICtx : wdi context
28296 pEventData : indication data
28297
28298 @see
28299 @return Result of the function call
28300*/
28301WDI_Status WDI_ProcessLphbCfgRsp
28302(
28303 WDI_ControlBlockType* pWDICtx,
28304 WDI_EventInfoType* pEventData
28305)
28306{
28307 WDI_Status wdiStatus;
28308 eHalStatus halStatus;
28309 WDI_LphbCfgCb wdiLphbCfgCb;
28310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28311
28312 /*-------------------------------------------------------------------------
28313 Sanity check
28314 -------------------------------------------------------------------------*/
28315 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28316 (NULL == pEventData->pEventData))
28317 {
28318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28319 "%s: Invalid parameters", __func__);
28320 WDI_ASSERT(0);
28321 return WDI_STATUS_E_FAILURE;
28322 }
28323
28324 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28325
28326 /*-------------------------------------------------------------------------
28327 Extract response and send it to UMAC
28328 -------------------------------------------------------------------------*/
28329 halStatus = *((eHalStatus*)pEventData->pEventData);
28330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28331
28332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28333 "LPHB Cfg Rsp Return status %d", wdiStatus);
28334 /*Notify UMAC*/
28335 if (NULL != wdiLphbCfgCb)
28336 {
28337 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28338 }
28339
28340 return WDI_STATUS_SUCCESS;
28341}
28342
28343/**
28344 @brief WDI_ProcessLPHBConfReq -
28345 LPHB configuration request to FW
28346
28347 @param pWDICtx : wdi context
28348 pEventData : indication data
28349
28350 @see
28351 @return none
28352*/
28353WDI_Status WDI_ProcessLPHBConfReq
28354(
28355 WDI_ControlBlockType* pWDICtx,
28356 WDI_EventInfoType* pEventData
28357)
28358{
28359 WDI_LPHBReq *pLphbReqParams;
28360 WDI_Status wdiStatus;
28361 wpt_uint8* pSendBuffer = NULL;
28362 wpt_uint16 usDataOffset = 0;
28363 wpt_uint16 usSendSize = 0;
28364 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28366
28367 /*-------------------------------------------------------------------------
28368 Sanity check
28369 -------------------------------------------------------------------------*/
28370 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28371 {
28372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28373 "%s: Invalid parameters in Suspend ind",__func__);
28374 WDI_ASSERT(0);
28375 return WDI_STATUS_E_FAILURE;
28376 }
28377
28378 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28379
28380 /*-----------------------------------------------------------------------
28381 Get message buffer
28382 -----------------------------------------------------------------------*/
28383 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28384 WDI_LPHB_CFG_REQ,
28385 sizeof(tHalLowPowerHeartBeatReqMsg),
28386 &pSendBuffer, &usDataOffset, &usSendSize))||
28387 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28388 {
28389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28390 "Unable to get send buffer in LPHB Ind ");
28391 WDI_ASSERT(0);
28392 return WDI_STATUS_E_FAILURE;
28393 }
28394
28395 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28396 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28397
28398 halLphbReqRarams->lowPowerHeartBeatCmdType =
28399 (tANI_U16)(++pLphbReqParams->cmd);
28400 switch ((tANI_U16)pLphbReqParams->cmd)
28401 {
28402 case WDI_LPHB_SET_EN_PARAMS_INDID:
28403 halLphbReqRarams->sessionIdx =
28404 pLphbReqParams->params.lphbEnableReq.session;
28405 halLphbReqRarams->options.control.heartBeatEnable =
28406 pLphbReqParams->params.lphbEnableReq.enable;
28407 halLphbReqRarams->options.control.heartBeatType =
28408 pLphbReqParams->params.lphbEnableReq.item;
28409 break;
28410
28411 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28412 halLphbReqRarams->sessionIdx =
28413 pLphbReqParams->params.lphbTcpParamReq.session;
28414 halLphbReqRarams->options.tcpParams.timeOutSec =
28415 pLphbReqParams->params.lphbTcpParamReq.timeout;
28416 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28417 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28418 sizeof(v_U32_t));
28419 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28420 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28421 sizeof(v_U32_t));
28422
28423 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28424 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28425 WDI_MAC_ADDR_LEN);
28426
28427 halLphbReqRarams->options.tcpParams.hostPort =
28428 pLphbReqParams->params.lphbTcpParamReq.src_port;
28429 halLphbReqRarams->options.tcpParams.destPort =
28430 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028431 halLphbReqRarams->options.tcpParams.timePeriodSec =
28432 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28433 halLphbReqRarams->options.tcpParams.tcpSn =
28434 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028435 break;
28436
28437 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28438 halLphbReqRarams->sessionIdx =
28439 pLphbReqParams->params.lphbTcpFilterReq.session;
28440 halLphbReqRarams->options.tcpUdpFilter.offset =
28441 pLphbReqParams->params.lphbTcpFilterReq.offset;
28442 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28443 pLphbReqParams->params.lphbTcpFilterReq.length;
28444 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28445 pLphbReqParams->params.lphbTcpFilterReq.filter,
28446 WDI_LPHB_FILTER_LEN);
28447 break;
28448
28449 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28450 halLphbReqRarams->sessionIdx =
28451 pLphbReqParams->params.lphbUdpParamReq.session;
28452 halLphbReqRarams->options.udpParams.timeOutSec =
28453 pLphbReqParams->params.lphbUdpParamReq.timeout;
28454 halLphbReqRarams->options.udpParams.timePeriodSec =
28455 pLphbReqParams->params.lphbUdpParamReq.interval;
28456 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28457 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28458 sizeof(v_U32_t));
28459 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28460 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28461 sizeof(v_U32_t));
28462
28463 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28464 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28465 WDI_MAC_ADDR_LEN);
28466
28467 halLphbReqRarams->options.udpParams.hostPort =
28468 pLphbReqParams->params.lphbUdpParamReq.src_port;
28469 halLphbReqRarams->options.udpParams.destPort =
28470 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28471 break;
28472
28473 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28474 halLphbReqRarams->sessionIdx =
28475 pLphbReqParams->params.lphbUdpFilterReq.session;
28476 halLphbReqRarams->options.tcpUdpFilter.offset =
28477 pLphbReqParams->params.lphbUdpFilterReq.offset;
28478 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28479 pLphbReqParams->params.lphbUdpFilterReq.length;
28480 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28481 pLphbReqParams->params.lphbUdpFilterReq.filter,
28482 WDI_LPHB_FILTER_LEN);
28483 break;
28484
28485 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28486 /* NA */
28487 break;
28488
28489 default:
28490 break;
28491 }
28492
28493 /*-------------------------------------------------------------------------
28494 Send Suspend Request to HAL
28495 -------------------------------------------------------------------------*/
28496 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28497 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28498
28499 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28500 usSendSize, pWDICtx->pfncRspCB,
28501 pWDICtx->pReqStatusUserData,
28502 WDI_LPHB_CFG_RESP);
28503
28504 return wdiStatus;
28505}
28506
28507/**
28508 @brief WDI_LPHBConfReq -
28509 LPHB configuration request API
28510
28511 @param lphbconfParam : configuration parameter
28512 usrData : client context
28513 lphbCfgCb : callback function pointer
28514
28515 @see
28516 @return Success or fail status code
28517*/
28518WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28519 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28520{
28521 WDI_EventInfoType wdiEventData;
28522
28523 /*------------------------------------------------------------------------
28524 Sanity Check
28525 ------------------------------------------------------------------------*/
28526 if (eWLAN_PAL_FALSE == gWDIInitialized)
28527 {
28528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28529 "WDI API call before module is initialized - Fail request");
28530
28531 return WDI_STATUS_E_NOT_ALLOWED;
28532 }
28533
28534 /*------------------------------------------------------------------------
28535 Fill in Event data and post to the Main FSM
28536 ------------------------------------------------------------------------*/
28537 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28538 wdiEventData.pEventData = lphbconfParam;
28539 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28540 wdiEventData.pCBfnc = lphbCfgCb;
28541 wdiEventData.pUserData = usrData;
28542
28543 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28544}
28545#endif /* FEATURE_WLAN_LPHB */
28546
Ravi Joshi96d77342013-07-23 08:37:49 -070028547/**
28548 @brief WDI_ProcessIbssPeerInactivityInd
28549 Process peer inactivity indication coming from HAL
28550
28551 @param pWDICtx: pointer to the WLAN DAL context
28552 pEventData: pointer to the event information structure
28553 @see
28554 @return Result of the function call
28555*/
28556WDI_Status
28557WDI_ProcessIbssPeerInactivityInd
28558(
28559 WDI_ControlBlockType* pWDICtx,
28560 WDI_EventInfoType* pEventData
28561)
28562{
28563 WDI_LowLevelIndType wdiInd;
28564 tIbssPeerInactivityIndMsg halIbssIndMsg;
28565
28566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28567
28568 /*-------------------------------------------------------------------------
28569 Sanity check
28570 -------------------------------------------------------------------------*/
28571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28572 ( NULL == pEventData->pEventData ))
28573 {
28574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28575 "%s: Invalid parameters", __func__);
28576 WDI_ASSERT( 0 );
28577 return WDI_STATUS_E_FAILURE;
28578 }
28579
28580 /*-------------------------------------------------------------------------
28581 Extract indication and send it to UMAC
28582 -------------------------------------------------------------------------*/
28583 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28584 pEventData->pEventData,
28585 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28586
28587 /*Fill in the indication parameters*/
28588 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28589
28590 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28591 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28592
28593 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28594 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28595
28596 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28597 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28598 sizeof(tSirMacAddr));
28599
28600 /*Notify UMAC*/
28601 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28602
28603 return WDI_STATUS_SUCCESS;
28604
28605} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028606
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028607/**
28608*@brief WDI_RateUpdateInd will be called when the upper MAC
28609 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028610
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028611
28612 @param wdiRateUpdateIndParams:
28613
28614
28615 @see
28616 @return Result of the function call
28617*/
28618WDI_Status
28619WDI_RateUpdateInd
28620(
28621 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28622)
28623{
28624 WDI_EventInfoType wdiEventData;
28625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28626
28627 /*------------------------------------------------------------------------
28628 Sanity Check
28629 ------------------------------------------------------------------------*/
28630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28631 {
28632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28633 "WDI API call before module is initialized - Fail request");
28634
28635 return WDI_STATUS_E_NOT_ALLOWED;
28636 }
28637
28638 /*------------------------------------------------------------------------
28639 Fill in Event data and post to the Main FSM
28640 ------------------------------------------------------------------------*/
28641 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28642 wdiEventData.pEventData = wdiRateUpdateIndParams;
28643 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28644 wdiEventData.pCBfnc = NULL;
28645 wdiEventData.pUserData = NULL;
28646
28647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28648
28649}/* WDI_RateUpdateInd */
28650
28651/**
28652 @brief Process Rate Update Indication and post it to HAL
28653
28654 @param pWDICtx: pointer to the WLAN DAL context
28655 pEventData: pointer to the event information structure
28656
28657 @see
28658 @return Result of the function call
28659*/
28660WDI_Status
28661WDI_ProcessRateUpdateInd
28662(
28663 WDI_ControlBlockType* pWDICtx,
28664 WDI_EventInfoType* pEventData
28665)
28666{
28667 wpt_uint8* pSendBuffer = NULL;
28668 wpt_uint16 usDataOffset = 0;
28669 wpt_uint16 usSendSize = 0;
28670 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28671 tHalRateUpdateInd *pRateUpdateInd;
28672 WDI_Status wdiStatus;
28673
28674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28675
28676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28677 "%s", __func__);
28678
28679 /*-------------------------------------------------------------------------
28680 Sanity check
28681 -------------------------------------------------------------------------*/
28682 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28683 {
28684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28685 "%s: Invalid parameters", __func__);
28686 WDI_ASSERT(0);
28687 return WDI_STATUS_E_FAILURE;
28688 }
28689 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28690 /*-----------------------------------------------------------------------
28691 Get message buffer
28692 -----------------------------------------------------------------------*/
28693
28694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28695 WDI_RATE_UPDATE_IND,
28696 sizeof(tHalRateUpdateParams),
28697 &pSendBuffer, &usDataOffset, &usSendSize))||
28698 ( usSendSize < (usDataOffset +
28699 sizeof(tHalRateUpdateParams) )))
28700 {
28701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28702 "Unable to get send buffer in Rate Update Indication %p ",
28703 pEventData);
28704 WDI_ASSERT(0);
28705 return WDI_STATUS_E_FAILURE;
28706 }
28707
28708 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28709
28710 /* Copy the bssid */
28711 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28712 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28713
28714 /* Copy the tx flags */
28715 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28716 pwdiRateUpdateInd->ucastDataRateTxFlag;
28717 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28718 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28719 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28720 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28721 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28722 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28723
28724 /* Copy the tx rates */
28725 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28726 pwdiRateUpdateInd->ucastDataRate;
28727 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28728 pwdiRateUpdateInd->reliableMcastDataRate;
28729 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28730 pwdiRateUpdateInd->mcastDataRate24GHz;
28731 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28732 pwdiRateUpdateInd->mcastDataRate5GHz;
28733
28734 /*-------------------------------------------------------------------------
28735 Send Rate Update Indication to HAL
28736 -------------------------------------------------------------------------*/
28737 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28738 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28739
28740 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28741
28742 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28743 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28744
28745} /* WDI_ProcessRateUpdateInd */
28746
28747#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028748/**
28749 @brief Process stop batch indication from WDA
28750
28751 @param pWDICtx: pointer to the WLAN DAL context
28752 pEventData: pointer to the event information structure
28753
28754 @see
28755 @return Result of the function call
28756*/
28757WDI_Status
28758WDI_ProcessStopBatchScanInd
28759(
28760 WDI_ControlBlockType* pWDICtx,
28761 WDI_EventInfoType* pEventData
28762)
28763{
28764 wpt_uint8* pSendBuffer = NULL;
28765 wpt_uint16 usDataOffset = 0;
28766 wpt_uint16 usSendSize = 0;
28767 WDI_Status wdiStatus;
28768 tHalBatchScanStopIndParam *pHalInd = NULL;
28769 WDI_StopBatchScanIndType *pWdiInd = NULL;
28770
28771
28772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28773
28774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28775 "%s", __func__);
28776
28777 /*-------------------------------------------------------------------------
28778 Sanity check
28779 -------------------------------------------------------------------------*/
28780
28781 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28782 {
28783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28784 "%s: Invalid parameters", __func__);
28785 WDI_ASSERT(0);
28786 return WDI_STATUS_E_FAILURE;
28787 }
28788 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28789 /*-----------------------------------------------------------------------
28790 Get message buffer
28791 -----------------------------------------------------------------------*/
28792
28793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28794 WDI_STOP_BATCH_SCAN_IND,
28795 sizeof(tHalBatchScanStopIndParam),
28796 &pSendBuffer, &usDataOffset, &usSendSize))||
28797 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28798 {
28799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28800 "Unable to get send buffer in stop batch scan ind %p ",
28801 pEventData);
28802 WDI_ASSERT(0);
28803 return WDI_STATUS_E_FAILURE;
28804 }
28805
28806 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28807 pHalInd->param = pWdiInd->param;
28808
28809 pWDICtx->pReqStatusUserData = NULL;
28810 pWDICtx->pfncRspCB = NULL;
28811 /*-------------------------------------------------------------------------
28812 Send Stop batch scan indication to HAL
28813 -------------------------------------------------------------------------*/
28814 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28815 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28816}
28817
28818/**
28819 @brief This API is called to trigger batch scan results from FW
28820
28821 @param pWDICtx: pointer to the WLAN DAL context
28822 pEventData: pointer to the event information structure
28823
28824 @see
28825 @return Result of the function call
28826*/
28827WDI_Status
28828WDI_ProcessTriggerBatchScanResultInd
28829(
28830 WDI_ControlBlockType* pWDICtx,
28831 WDI_EventInfoType* pEventData
28832)
28833{
28834 WDI_Status wdiStatus;
28835 wpt_uint8* pSendBuffer = NULL;
28836 wpt_uint16 usDataOffset = 0;
28837 wpt_uint16 usSendSize = 0;
28838 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28839 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28840
28841
28842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28843
28844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28845 "%s", __func__);
28846
28847 /*-------------------------------------------------------------------------
28848 Sanity check
28849 -------------------------------------------------------------------------*/
28850
28851 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28852 {
28853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28854 "%s: Invalid parameters", __func__);
28855 WDI_ASSERT(0);
28856 return WDI_STATUS_E_FAILURE;
28857 }
28858 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28859 /*-----------------------------------------------------------------------
28860 Get message buffer
28861 -----------------------------------------------------------------------*/
28862
28863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28864 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28865 sizeof(tHalBatchScanTriggerResultParam),
28866 &pSendBuffer, &usDataOffset, &usSendSize))||
28867 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28868 {
28869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28870 "Unable to get send buffer in stop batch scan ind %p ",
28871 pEventData);
28872 WDI_ASSERT(0);
28873 return WDI_STATUS_E_FAILURE;
28874 }
28875
28876 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28877 pHalInd->param = pWdiInd->param;
28878
28879 pWDICtx->pReqStatusUserData = NULL;
28880 pWDICtx->pfncRspCB = NULL;
28881 /*-------------------------------------------------------------------------
28882 Send trigger batch scan result indication to HAL
28883 -------------------------------------------------------------------------*/
28884 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28885 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28886}
28887
28888
28889/**
28890 @brief Process set batch scan response from FW
28891
28892 @param pWDICtx: pointer to the WLAN DAL context
28893 pEventData: pointer to the event information structure
28894
28895 @see
28896 @return Result of the function call
28897*/
28898WDI_Status
28899WDI_ProcessSetBatchScanRsp
28900(
28901 WDI_ControlBlockType* pWDICtx,
28902 WDI_EventInfoType* pEventData
28903)
28904{
28905 WDI_SetBatchScanCb wdiSetBatchScanCb;
28906 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28907
28908 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28910
28911 /*sanity check*/
28912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28913 ( NULL == pEventData->pEventData))
28914 {
28915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28916 "%s: Invalid parameters", __func__);
28917 WDI_ASSERT(0);
28918 return WDI_STATUS_E_FAILURE;
28919 }
28920
28921 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28922 if ( NULL == wdiSetBatchScanCb)
28923 {
28924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28925 "%s: call back function is NULL", __func__);
28926 WDI_ASSERT(0);
28927 return WDI_STATUS_E_FAILURE;
28928 }
28929
28930 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28931
28932 if (NULL == pSetBatchScanRsp)
28933 {
28934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028935 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028936 pWDICtx, pEventData, pEventData->pEventData);
28937 WDI_ASSERT(0);
28938 return WDI_STATUS_E_FAILURE;
28939 }
28940
28941 /*extract response and send it to UMAC*/
28942 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28943
28944 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28945
28946 /*Notify UMAC*/
28947 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28948
28949 wpalMemoryFree(pSetBatchScanRsp);
28950
28951 return WDI_STATUS_SUCCESS;
28952}/*WDI_ProcessSetBatchScanRsp*/
28953
28954/**
28955 @brief Process batch scan result indication from FW
28956
28957 @param pWDICtx: pointer to the WLAN DAL context
28958 pEventData: pointer to the event information structure
28959
28960 @see
28961 @return Result of the function call
28962*/
28963WDI_Status
28964WDI_ProcessBatchScanResultInd
28965(
28966 WDI_ControlBlockType* pWDICtx,
28967 WDI_EventInfoType* pEventData
28968)
28969{
28970 void *pBatchScanResultInd;
28971 WDI_LowLevelIndType wdiInd;
28972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28973
28974 /*sanity check*/
28975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28976 ( NULL == pEventData->pEventData))
28977 {
28978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28979 "%s: Invalid parameters", __func__);
28980 WDI_ASSERT(0);
28981 return WDI_STATUS_E_FAILURE;
28982 }
28983
28984 /*extract response and send it to UMAC*/
28985 pBatchScanResultInd = (void *)pEventData->pEventData;
28986
28987 /*Fill in the indication parameters*/
28988 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28989
28990 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28991
28992 /*Notify UMAC*/
28993 if (pWDICtx->wdiLowLevelIndCB)
28994 {
28995 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28996 }
28997 else
28998 {
28999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29000 "%s: WDILowLevelIndCb is null", __func__);
29001 WDI_ASSERT(0);
29002 return WDI_STATUS_E_FAILURE;
29003 }
29004
29005 return WDI_STATUS_SUCCESS;
29006} /*End of WDI_ProcessBatchScanResultInd*/
29007
29008/**
29009 @brief WDI_ProcessSetBatchScanReq -
29010 Set batch scan request to FW
29011
29012 @param pWDICtx : wdi context
29013 pEventData : indication data
29014
29015 @see
29016 @return none
29017*/
29018WDI_Status WDI_ProcessSetBatchScanReq
29019(
29020 WDI_ControlBlockType* pWDICtx,
29021 WDI_EventInfoType* pEventData
29022)
29023{
29024 WDI_SetBatchScanReqType *pWdiReq;
29025 WDI_Status wdiStatus;
29026 wpt_uint8* pSendBuffer = NULL;
29027 wpt_uint16 usDataOffset = 0;
29028 wpt_uint16 usSendSize = 0;
29029 tHalBatchScanSetParams *pHalReq;
29030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29031
29032 /*sanity check*/
29033 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29034 {
29035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29036 "%s: Invalid parameters in set batch scan request", __func__);
29037 WDI_ASSERT(0);
29038 return WDI_STATUS_E_FAILURE;
29039 }
29040
29041
29042 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29043
29044
29045 /*get message buffer*/
29046 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29047 WDI_SET_BATCH_SCAN_REQ,
29048 sizeof(tHalBatchScanSetParams),
29049 &pSendBuffer, &usDataOffset, &usSendSize))||
29050 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29051 {
29052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29053 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29054 WDI_ASSERT(0);
29055 return WDI_STATUS_E_FAILURE;
29056 }
29057
29058 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29059
29060 pHalReq->rtt = pWdiReq->rtt;
29061 pHalReq->rfBand = pWdiReq->rfBand;
29062 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29063 pHalReq->scanInterval = pWdiReq->scanFrequency;
29064 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29065
29066 /*send set batch scan request to fw*/
29067 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29068 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29069
29070 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29071 usSendSize, pWDICtx->pfncRspCB,
29072 pWDICtx->pReqStatusUserData,
29073 WDI_SET_BATCH_SCAN_RESP);
29074
29075 return wdiStatus;
29076}
29077
29078/**
29079 @brief WDI_SetBatchScanReq
29080 This API is called to set batch scan request in FW
29081
29082 @param pBatchScanReqParam : pointer to set batch scan re param
29083 usrData : Client context
29084 setBatchScanRspCb : set batch scan resp callback
29085 @see
29086 @return SUCCESS or FAIL
29087*/
29088WDI_Status WDI_SetBatchScanReq
29089(
29090 void *pBatchScanReqParam,
29091 void *usrData,
29092 WDI_SetBatchScanCb setBatchScanRspCb
29093)
29094{
29095 WDI_EventInfoType wdiEventData;
29096
29097 /*sanity check*/
29098 if (eWLAN_PAL_FALSE == gWDIInitialized)
29099 {
29100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29101 "WDI API call before module is initialized - Fail request");
29102
29103 return WDI_STATUS_E_NOT_ALLOWED;
29104 }
29105
29106 /* fill in event data and post to the main FSM */
29107 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29108 wdiEventData.pEventData = pBatchScanReqParam;
29109 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29110 wdiEventData.pCBfnc = setBatchScanRspCb;
29111 wdiEventData.pUserData = usrData;
29112
29113 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29114}
29115
29116/**
29117 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29118
29119 @param None
29120
29121 @see
29122
29123 @return Status of the request
29124*/
29125WDI_Status
29126WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29127{
29128 WDI_EventInfoType wdiEventData;
29129
29130 /*-------------------------------------------------------------------------
29131 Sanity Check
29132 ------------------------------------------------------------------------*/
29133 if (eWLAN_PAL_FALSE == gWDIInitialized)
29134 {
29135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29136 "WDI API call before module is initialized - Fail request!");
29137
29138 return WDI_STATUS_E_NOT_ALLOWED;
29139 }
29140
29141 /*-------------------------------------------------------------------------
29142 Fill in Event data and post to the Main FSM
29143 ------------------------------------------------------------------------*/
29144 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29145 wdiEventData.pEventData = pWdiReq;
29146 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29147 wdiEventData.pCBfnc = NULL;
29148 wdiEventData.pUserData = NULL;
29149
29150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29151}
29152
29153/**
29154 @brief WDI_TriggerBatchScanResultInd
29155 This API is called to pull batch scan result from FW
29156
29157 @param pWdiReq : pointer to get batch scan ind param
29158 @see
29159 @return SUCCESS or FAIL
29160*/
29161WDI_Status WDI_TriggerBatchScanResultInd
29162(
29163 WDI_TriggerBatchScanResultIndType *pWdiReq
29164)
29165{
29166 WDI_EventInfoType wdiEventData;
29167 /*-------------------------------------------------------------------------
29168 Sanity Check
29169 ------------------------------------------------------------------------*/
29170 if (eWLAN_PAL_FALSE == gWDIInitialized)
29171 {
29172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29173 "WDI API call before module is initialized - Fail request!");
29174
29175 return WDI_STATUS_E_NOT_ALLOWED;
29176 }
29177
29178 /*-------------------------------------------------------------------------
29179 Fill in Event data and post to the Main FSM
29180 ------------------------------------------------------------------------*/
29181 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29182 wdiEventData.pEventData = pWdiReq;
29183 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29184 wdiEventData.pCBfnc = NULL;
29185 wdiEventData.pUserData = NULL;
29186
29187 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29188}
Rajeev3db91f12013-10-05 11:03:42 +053029189#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Changd95d6622013-12-15 15:18:55 -080029190
29191#ifdef FEATURE_WLAN_CH_AVOID
29192/**
29193 @brief v -WDI_ProcessChAvoidInd
29194
29195
29196 @param pWDICtx : wdi context
29197 pEventData : indication data
29198 @see
29199 @return Result of the function call
29200*/
29201WDI_Status
29202WDI_ProcessChAvoidInd
29203(
29204 WDI_ControlBlockType* pWDICtx,
29205 WDI_EventInfoType* pEventData
29206)
29207{
29208 WDI_LowLevelIndType wdiInd;
29209 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29210 wpt_uint16 rangeLoop;
29211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29212
29213 /*-------------------------------------------------------------------------
29214 Sanity check
29215 -------------------------------------------------------------------------*/
29216 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29217 (NULL == pEventData->pEventData))
29218 {
29219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29220 "%s: Invalid parameters", __func__);
29221 WDI_ASSERT(0);
29222 return WDI_STATUS_E_FAILURE;
29223 }
29224
29225 /*-------------------------------------------------------------------------
29226 Extract indication and send it to UMAC
29227 -------------------------------------------------------------------------*/
29228 wpalMemoryCopy(&chAvoidIndicationParam,
29229 pEventData->pEventData,
29230 sizeof(tHalAvoidFreqRangeIndParams));
29231
29232 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29233 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29234 chAvoidIndicationParam.avoidCnt;
29235 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29236 (void *)chAvoidIndicationParam.avoidRange,
29237 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29238 sizeof(WDI_ChAvoidFreqType));
29239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29240 "%s: band count %d", __func__,
29241 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29242 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29243 {
29244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29245 "%s: srart freq %d, end freq %d", __func__,
29246 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29247 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29248 }
29249
29250 /*Notify UMAC*/
29251 if (pWDICtx->wdiLowLevelIndCB)
29252 {
29253 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29254 }
29255
29256 return WDI_STATUS_SUCCESS;
29257}
29258#endif /* FEATURE_WLAN_CH_AVOID */
29259