blob: 0c4e315bcfbf1a3cad0ef3dc8672ab43ea278064 [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*/
Arif Hussain615295b2014-01-31 12:12:28 -0800615 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev3db91f12013-10-05 11:03:42 +0530616
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 /*---------------------------------------------------------------------
618 Indications
619 ---------------------------------------------------------------------*/
620 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
621 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
622 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
623 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
624 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
625 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
626
627 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
628
629 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
630
Jeff Johnson295189b2012-06-20 16:38:30 -0700631 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700632
633#ifdef FEATURE_WLAN_SCAN_PNO
634 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
635#else
636 NULL,
637#endif // FEATURE_WLAN_SCAN_PNO
638
639#ifdef WLAN_WAKEUP_EVENTS
640 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
641#else // WLAN_WAKEUP_EVENTS
642 NULL,
643#endif // WLAN_WAKEUP_EVENTS
644
645 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800646
Viral Modi9dc288a2012-12-10 13:09:21 -0800647 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530648#ifdef FEATURE_WLAN_TDLS
649 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
650#else
651 NULL,
652#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700653
654#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700655 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700656#else
657 NULL,
658#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700659
660 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700661
662 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530663
664#ifdef FEATURE_WLAN_BATCH_SCAN
665 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
666#else
667 NULL,
668#endif
669
Leo Changd95d6622013-12-15 15:18:55 -0800670#ifdef FEATURE_WLAN_CH_AVOID
671 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
672#else
673 NULL,
674#endif /* FEATURE_WLAN_CH_AVOID */
675
Jeff Johnson295189b2012-06-20 16:38:30 -0700676};
677
678
Jeff Johnsone7245742012-09-05 17:12:55 -0700679/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 WLAN DAL Global Control Block
681 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700682WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700683static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
684
Jeff Johnsone7245742012-09-05 17:12:55 -0700685const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700686
687/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700688WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700689void* WDI_GET_PAL_CTX( void )
690{
Jeff Johnsone7245742012-09-05 17:12:55 -0700691 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700692}/*WDI_GET_PAL_CTX*/
693
Jeff Johnsone7245742012-09-05 17:12:55 -0700694/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700695 Helper inline converters
696 ============================================================================*/
697/*Convert WDI driver type into HAL driver type*/
698WPT_STATIC WPT_INLINE WDI_Status
699WDI_HAL_2_WDI_STATUS
700(
701 eHalStatus halStatus
702);
703
704/*Convert WDI request type into HAL request type*/
705WPT_STATIC WPT_INLINE tHalHostMsgType
706WDI_2_HAL_REQ_TYPE
707(
708 WDI_RequestEnumType wdiReqType
709);
710
711/*Convert WDI response type into HAL response type*/
712WPT_STATIC WPT_INLINE WDI_ResponseEnumType
713HAL_2_WDI_RSP_TYPE
714(
715 tHalHostMsgType halMsg
716);
717
718/*Convert WDI driver type into HAL driver type*/
719WPT_STATIC WPT_INLINE tDriverType
720WDI_2_HAL_DRV_TYPE
721(
722 WDI_DriverType wdiDriverType
723);
724
725/*Convert WDI stop reason into HAL stop reason*/
726WPT_STATIC WPT_INLINE tHalStopType
727WDI_2_HAL_STOP_REASON
728(
729 WDI_StopType wdiStopType
730);
731
732/*Convert WDI scan mode type into HAL scan mode type*/
733WPT_STATIC WPT_INLINE eHalSysMode
734WDI_2_HAL_SCAN_MODE
735(
736 WDI_ScanMode wdiScanMode
737);
738
739/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700740WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700741WDI_2_HAL_SEC_CH_OFFSET
742(
743 WDI_HTSecondaryChannelOffset wdiSecChOffset
744);
745
746/*Convert WDI BSS type into HAL BSS type*/
747WPT_STATIC WPT_INLINE tSirBssType
748WDI_2_HAL_BSS_TYPE
749(
750 WDI_BssType wdiBSSType
751);
752
753/*Convert WDI NW type into HAL NW type*/
754WPT_STATIC WPT_INLINE tSirNwType
755WDI_2_HAL_NW_TYPE
756(
757 WDI_NwType wdiNWType
758);
759
760/*Convert WDI chanel bonding type into HAL cb type*/
761WPT_STATIC WPT_INLINE ePhyChanBondState
762WDI_2_HAL_CB_STATE
763(
764 WDI_PhyChanBondState wdiCbState
765);
766
767/*Convert WDI chanel bonding type into HAL cb type*/
768WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
769WDI_2_HAL_HT_OPER_MODE
770(
771 WDI_HTOperatingMode wdiHTOperMode
772);
773
774/*Convert WDI mimo PS type into HAL mimo PS type*/
775WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
776WDI_2_HAL_MIMO_PS
777(
778 WDI_HTMIMOPowerSaveState wdiHTOperMode
779);
780
781/*Convert WDI ENC type into HAL ENC type*/
782WPT_STATIC WPT_INLINE tAniEdType
783WDI_2_HAL_ENC_TYPE
784(
785 WDI_EncryptType wdiEncType
786);
787
788/*Convert WDI WEP type into HAL WEP type*/
789WPT_STATIC WPT_INLINE tAniWepType
790WDI_2_HAL_WEP_TYPE
791(
792 WDI_WepType wdiWEPType
793);
794
795/*Convert WDI Link State into HAL Link State*/
796WPT_STATIC WPT_INLINE tSirLinkState
797WDI_2_HAL_LINK_STATE
798(
799 WDI_LinkStateType wdiLinkState
800);
801
Jeff Johnsone7245742012-09-05 17:12:55 -0700802/*Translate a STA Context from WDI into HAL*/
803WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700804void
805WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700806(
Jeff Johnson295189b2012-06-20 16:38:30 -0700807 tConfigStaParams* phalConfigSta,
808 WDI_ConfigStaReqInfoType* pwdiConfigSta
809);
Jeff Johnsone7245742012-09-05 17:12:55 -0700810
811/*Translate a Rate set info from WDI into HAL*/
812WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700813WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700814(
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 tSirMacRateSet* pHalRateSet,
816 WDI_RateSet* pwdiRateSet
817);
818
819/*Translate an EDCA Parameter Record from WDI into HAL*/
820WPT_STATIC WPT_INLINE void
821WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700822(
Jeff Johnson295189b2012-06-20 16:38:30 -0700823 tSirMacEdcaParamRecord* phalEdcaParam,
824 WDI_EdcaParamRecord* pWDIEdcaParam
825);
826
827/*Copy a management frame header from WDI fmt into HAL fmt*/
828WPT_STATIC WPT_INLINE void
829WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
830(
831 tSirMacMgmtHdr* pmacMgmtHdr,
832 WDI_MacMgmtHdr* pwdiMacMgmtHdr
833);
834
835/*Copy config bss parameters from WDI fmt into HAL fmt*/
836WPT_STATIC WPT_INLINE void
837WDI_CopyWDIConfigBSSToHALConfigBSS
838(
839 tConfigBssParams* phalConfigBSS,
840 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
841);
842
Jeff Johnsone7245742012-09-05 17:12:55 -0700843/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 pointed to by user data */
845WPT_STATIC WPT_INLINE void
846WDI_ExtractRequestCBFromEvent
847(
848 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700849 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700850 void** ppUserData
851);
852
853wpt_uint8
854WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700855(
Jeff Johnson295189b2012-06-20 16:38:30 -0700856 WDI_ControlBlockType* pWDICtx,
857 WDI_BSSSessionType** ppSession
858);
859
860void
861WDI_AddBcastSTAtoSTATable
862(
863 WDI_ControlBlockType* pWDICtx,
864 WDI_AddStaParams * staParams,
865 wpt_uint16 usBcastStaIdx
866);
867
868WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700869(
Jeff Johnson295189b2012-06-20 16:38:30 -0700870 WDI_ControlBlockType* pWDICtx,
871 WDI_EventInfoType* pEventData
872);
873
874void
875WDI_SetPowerStateCb
876(
877 wpt_status status,
878 unsigned int dxePhyAddr,
879 void *pContext
880);
881
882#define CASE_RETURN_STRING( str ) \
883 case ( ( str ) ): return( #str ); break \
884
885/**
886 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700887
888 @param wdiReqMsgId: WDI Message request Id
889
890 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700891 @return Result of the function call
892*/
893static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
894{
895 switch (wdiReqMsgId)
896 {
897 CASE_RETURN_STRING( WDI_START_REQ );
898 CASE_RETURN_STRING( WDI_STOP_REQ );
899 CASE_RETURN_STRING( WDI_CLOSE_REQ );
900 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
901 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
902 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
903 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
904 CASE_RETURN_STRING( WDI_JOIN_REQ );
905 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
906 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
907 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
908 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
909 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
910 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
911 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
912 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
913 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
914 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
915 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
916 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
917 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
918 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
919 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
920 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
921 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
922 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
923 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
924 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
925 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
926 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
927 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
928 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
929 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
930 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussainfc753992013-08-09 15:09:58 -0700931 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700932 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530933#ifdef FEATURE_WLAN_TDLS
934 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
935#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700936 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
937 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
938 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
939 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
940 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
941 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
942 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
943 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
944 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
945 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
946 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
947 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
948 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
949 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
950 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
951 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
952 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
953 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
954 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
955 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
956 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
957 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
958 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
959 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
960 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700961 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700962 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
963 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
964 #ifdef FEATURE_WLAN_SCAN_PNO
965 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
966 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
967 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
968 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700969#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700970 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
973 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
974 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
975 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
976 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
977 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
978 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
979 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
980 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800981 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800982 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700983#ifdef WLAN_FEATURE_11W
984 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
985#endif
Rajeev3db91f12013-10-05 11:03:42 +0530986#ifdef FEATURE_WLAN_BATCH_SCAN
987 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
988 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
989 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
990#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700991 default:
992 return "Unknown WDI MessageId";
993 }
994}
995
996
997
998/**
999 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001000
1001 @param wdiRespMsgId: WDI Message response Id
1002
1003 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001004 @return Result of the function call
1005*/
1006static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1007{
1008 switch (wdiRespMsgId)
1009 {
1010 CASE_RETURN_STRING( WDI_START_RESP );
1011 CASE_RETURN_STRING( WDI_STOP_RESP );
1012 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1013 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1014 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1015 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1016 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1017 CASE_RETURN_STRING( WDI_JOIN_RESP );
1018 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1019 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1020 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1021 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1022 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1023 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1024 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1025 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1026 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1027 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1028 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1029 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1031 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1032 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1033 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1034 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1035 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1036 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1037 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1038 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1039 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1040 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1041 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1042 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1043 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1044 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301045#ifdef FEATURE_WLAN_TDLS
1046 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1047 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1048#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1050 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1051 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1052 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1053 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1054 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1055 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1056 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1057 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1058 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1059 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1060 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1061 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1062 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1063 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1064 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1065 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1066 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1067 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1068 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1069 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1070 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1071 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1072 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1073 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001074 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001075 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1076 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1077 #ifdef FEATURE_WLAN_SCAN_PNO
1078 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1079 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1080 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1081 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001082#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001083 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001084#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001085 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1086 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1087 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1088 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1089 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1090 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1091 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1092 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001093 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301094#ifdef FEATURE_WLAN_BATCH_SCAN
1095 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 default:
1098 return "Unknown WDI MessageId";
1099 }
1100}
1101
1102/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301103 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1104 Capability bitmap array.
1105 @param capabilityBitmap - Base address of Bitmap array
1106 @see
1107 @returns None
1108 */
1109void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1110{
1111 int i;
1112 char capStr[512];
1113 char *pCapStr = capStr;
1114 for (i = 0; i < 32; i++) {
1115 if ((*(capabilityBitmap + 0) & (1 << i))) {
1116 switch(i) {
1117 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1118 pCapStr += strlen("MCC");
1119 break;
1120 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1121 pCapStr += strlen("P2P");
1122 break;
1123 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1124 pCapStr += strlen("DOT11AC");
1125 break;
1126 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1127 pCapStr += strlen("SLM_SESSIONIZATION");
1128 break;
1129 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1130 pCapStr += strlen("DOT11AC_OPMODE");
1131 break;
1132 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1133 pCapStr += strlen("SAP32STA");
1134 break;
1135 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1136 pCapStr += strlen("TDLS");
1137 break;
1138 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1139 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1140 break;
1141 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1142 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1143 break;
1144 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1145 pCapStr += strlen("BEACON_OFFLOAD");
1146 break;
1147 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1148 pCapStr += strlen("SCAN_OFFLOAD");
1149 break;
1150 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1151 pCapStr += strlen("ROAM_OFFLOAD");
1152 break;
1153 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1154 pCapStr += strlen("BCN_MISS_OFFLOAD");
1155 break;
1156 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1157 pCapStr += strlen("STA_POWERSAVE");
1158 break;
1159 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1160 pCapStr += strlen("AP_UAPSD");
1161 break;
1162 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1163 pCapStr += strlen("AP_DFS");
1164 break;
1165 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1166 pCapStr += strlen("BLOCKACK");
1167 break;
1168 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1169 pCapStr += strlen("PHY_ERR");
1170 break;
1171 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1172 pCapStr += strlen("BCN_FILTER");
1173 break;
1174 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1175 pCapStr += strlen("RTT");
1176 break;
1177 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1178 pCapStr += strlen("RATECTRL");
1179 break;
1180 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1181 pCapStr += strlen("WOW");
1182 break;
1183 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1184 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1185 break;
Kanchanapally, Vidyullathab55886f2013-12-24 17:28:54 +05301186 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1187 pCapStr += strlen("FW_IN_TX_PATH");
1188 break;
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301189 }
1190 *pCapStr++ = ',';
1191 *pCapStr++ = ' ';
1192 }
1193 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301194 pCapStr -= 2;
1195 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301196 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301198}
1199
1200/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001202
1203 @param halStatusId: HAL status Id
1204
1205 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001206 @return Result of the function call
1207*/
1208static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1209{
1210 switch (halStatusId)
1211 {
1212 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1213 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1214 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1215 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1216 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1217 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1218 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1219 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1220 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1221 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1222 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1223 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1224 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1225 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1226 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1227 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1228 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1229 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1230 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1231 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1232 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1233 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1234 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1235 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1236 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1237 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1238 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1239 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1240 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1241 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1242 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1243 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1244 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1245 default:
1246 return "Unknown HAL status";
1247 }
1248}
1249
Jeff Johnsone7245742012-09-05 17:12:55 -07001250/*========================================================================
1251
Jeff Johnson295189b2012-06-20 16:38:30 -07001252 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001253
Jeff Johnson295189b2012-06-20 16:38:30 -07001254==========================================================================*/
1255
1256/**
1257 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001258
Jeff Johnson295189b2012-06-20 16:38:30 -07001259 DAL will allocate all the resources it needs. It will open PAL, it will also
1260 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001261 DXE/SMD or any other drivers that they need.
1262
Jeff Johnson295189b2012-06-20 16:38:30 -07001263 @param pOSContext: pointer to the OS context provided by the UMAC
1264 will be passed on to PAL on Open
1265 ppWDIGlobalCtx: output pointer of Global Context
1266 pWdiDevCapability: output pointer of device capability
1267
1268 @return Result of the function call
1269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001271WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001272(
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 void* pOSContext,
1274 void** ppWDIGlobalCtx,
1275 WDI_DeviceCapabilityType* pWdiDevCapability,
1276 unsigned int driverType
1277)
1278{
1279 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001280 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1284
1285 /*---------------------------------------------------------------------
1286 Sanity check
1287 ---------------------------------------------------------------------*/
1288 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1291 "Invalid input parameters in WDI_Init");
1292
Jeff Johnsone7245742012-09-05 17:12:55 -07001293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 }
1295
1296 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001297 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 ---------------------------------------------------------------------*/
1299 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1300 {
1301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1302 "WDI module already initialized - return");
1303
Jeff Johnsone7245742012-09-05 17:12:55 -07001304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001305 }
1306
1307 /*Module is now initialized - this flag is to ensure the fact that multiple
1308 init will not happen on WDI
1309 !! - potential race does exist because read and set are not atomic,
1310 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001311 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001312
1313 /*Setup the control block */
1314 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001315 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001316
1317 /*Setup the STA Table*/
1318 wdiStatus = WDI_STATableInit(&gWDICb);
1319 if ( WDI_STATUS_SUCCESS != wdiStatus )
1320 {
1321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1322 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001323 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001324 goto fail_STATableInit;
1325 }
1326
1327 /*------------------------------------------------------------------------
1328 Open the PAL
1329 ------------------------------------------------------------------------*/
1330 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1331 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1332 {
1333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1334 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001335 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 goto fail_wpalOpen;
1337 }
1338
1339 /*Initialize main synchro mutex - it will be used to ensure integrity of
1340 the main WDI Control Block*/
1341 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1342 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1343 {
1344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1345 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001346 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 goto fail_mutex;
1348 }
1349
1350 /*Initialize the response timer - it will be used to time all messages
1351 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001352 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1353 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001354 &gWDICb);
1355 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1356 {
1357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1358 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001359 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001360 goto fail_timer;
1361 }
1362
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001363 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1364 WDI_SsrTimerCB,
1365 &gWDICb);
1366 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1367 {
1368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1369 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001370 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001371 goto fail_timer2;
1372 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001373 /* Initialize the WDI Pending Request Queue*/
1374 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1375 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1376 {
1377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1378 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001379 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001380 goto fail_pend_queue;
1381 }
1382
1383 /*Init WDI Pending Assoc Id Queue */
1384 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1385 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1386 {
1387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1388 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001389 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 goto fail_assoc_queue;
1391 }
1392
1393 /*Initialize the BSS sessions pending Queue */
1394 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1395 {
1396 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1397 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1398 {
1399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1400 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001401 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 goto fail_bss_queue;
1403 }
1404 }
1405
1406 /*Indicate the control block is sufficiently initialized for callbacks*/
1407 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1408
1409 /*------------------------------------------------------------------------
1410 Initialize the Data Path Utility Module
1411 ------------------------------------------------------------------------*/
1412 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1413 if ( WDI_STATUS_SUCCESS != wdiStatus )
1414 {
1415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1416 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001417 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 goto fail_dp_util_init;
1419 }
1420
1421 /* Init Set power state event */
1422 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001423 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001424 {
1425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1426 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001427 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001428 goto fail_power_event;
1429 }
1430
1431 /* Init WCTS action event */
1432 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001433 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001434 {
1435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1436 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001437 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 goto fail_wcts_event;
1439 }
1440
1441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001442 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001443 ------------------------------------------------------------------------*/
1444 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1445 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 wctsCBs.wctsRxMsgCBData = &gWDICb;
1448
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001451 WDI_CT_CHANNEL_SIZE,
1452 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001453
1454 if ( NULL == gWDICb.wctsHandle )
1455 {
1456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001457 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 goto fail_wcts_open;
1459 }
1460
1461 gWDICb.driverMode = (tDriverType)driverType;
1462 /* FTM mode not need to open Transport Driver */
1463 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001464 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001465 /*------------------------------------------------------------------------
1466 Open the Data Transport
1467 ------------------------------------------------------------------------*/
1468 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1469 {
1470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001471 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 goto fail_wdts_open;
1473 }
1474 }
1475
1476 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001477 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001478
1479 /*Send the context as a ptr to the global WDI Control Block*/
1480 *ppWDIGlobalCtx = &gWDICb;
1481
1482 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001483 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001484 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1485 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1486 return WDI_STATUS_SUCCESS;
1487
1488 /* ERROR handlers
1489 Undo everything that completed successfully */
1490
1491 fail_wdts_open:
1492 {
1493 wpt_status eventStatus;
1494
1495 /* Closing WCTS in this scenario is tricky since it has to close
1496 the SMD channel and then we get notified asynchronously when
1497 the channel has been closed. So we take some of the logic from
1498 the "normal" close procedure in WDI_Close()
1499 */
1500
1501 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 {
1504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001505 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 }
1507
1508 WCTS_CloseTransport(gWDICb.wctsHandle);
1509
1510 /* Wait for WCTS to close the control transport. If we were able
1511 to reset the event flag, then we'll wait for the event,
1512 otherwise we'll wait for a maximum amount of time required for
1513 the channel to be closed */
1514 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1515 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001516 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 WDI_WCTS_ACTION_TIMEOUT);
1518 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1519 {
1520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001521 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 }
1523 }
1524 else
1525 {
1526 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1527 }
1528 }
1529 fail_wcts_open:
1530 wpalEventDelete(&gWDICb.wctsActionEvent);
1531 fail_wcts_event:
1532 wpalEventDelete(&gWDICb.setPowerStateEvent);
1533 fail_power_event:
1534 WDI_DP_UtilsExit(&gWDICb);
1535 fail_dp_util_init:
1536 gWDICb.magic = 0;
1537 fail_bss_queue:
1538 /* entries 0 thru i-1 were successfully initialized */
1539 while (0 < i)
1540 {
1541 i--;
1542 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1543 }
1544 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1545 fail_assoc_queue:
1546 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1547 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001548 wpalTimerDelete(&gWDICb.ssrTimer);
1549 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 wpalTimerDelete(&gWDICb.wptResponseTimer);
1551 fail_timer:
1552 wpalMutexDelete(&gWDICb.wptMutex);
1553 fail_mutex:
1554 wpalClose(gWDICb.pPALContext);
1555 fail_wpalOpen:
1556 WDI_STATableClose(&gWDICb);
1557 fail_STATableInit:
1558 gWDIInitialized = eWLAN_PAL_FALSE;
1559
1560 return WDI_STATUS_E_FAILURE;
1561
1562}/*WDI_Init*/;
1563
1564/**
1565 @brief WDI_Start will be called when the upper MAC is ready to
1566 commence operation with the WLAN Device. Upon the call
1567 of this API the WLAN DAL will pack and send a HAL Start
1568 message to the lower RIVA sub-system if the SMD channel
1569 has been fully opened and the RIVA subsystem is up.
1570
1571 If the RIVA sub-system is not yet up and running DAL
1572 will queue the request for Open and will wait for the
1573 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001574 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001575
1576 WDI_Init must have been called.
1577
Jeff Johnsone7245742012-09-05 17:12:55 -07001578 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001580
Jeff Johnson295189b2012-06-20 16:38:30 -07001581 wdiStartRspCb: callback for passing back the response of
1582 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001583
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001585 callback
1586
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 @see WDI_Start
1588 @return Result of the function call
1589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001591WDI_Start
1592(
1593 WDI_StartReqParamsType* pwdiStartParams,
1594 WDI_StartRspCb wdiStartRspCb,
1595 void* pUserData
1596)
1597{
1598 WDI_EventInfoType wdiEventData;
1599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1600
1601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001603 ------------------------------------------------------------------------*/
1604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1605 {
1606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1607 "WDI API call before module is initialized - Fail request");
1608
Jeff Johnsone7245742012-09-05 17:12:55 -07001609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 }
1611
1612 /*------------------------------------------------------------------------
1613 Fill in Event data and post to the Main FSM
1614 ------------------------------------------------------------------------*/
1615 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001616 wdiEventData.pEventData = pwdiStartParams;
1617 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1618 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001619 wdiEventData.pUserData = pUserData;
1620
1621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1622
1623}/*WDI_Start*/
1624
1625/**
1626 @brief WDI_Stop will be called when the upper MAC is ready to
1627 stop any operation with the WLAN Device. Upon the call
1628 of this API the WLAN DAL will pack and send a HAL Stop
1629 message to the lower RIVA sub-system if the DAL Core is
1630 in started state.
1631
1632 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001633
1634 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001635
1636 WDI_Start must have been called.
1637
Jeff Johnsone7245742012-09-05 17:12:55 -07001638 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001640
Jeff Johnson295189b2012-06-20 16:38:30 -07001641 wdiStopRspCb: callback for passing back the response of
1642 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001643
Jeff Johnson295189b2012-06-20 16:38:30 -07001644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001645 callback
1646
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 @see WDI_Start
1648 @return Result of the function call
1649*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001650WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001651WDI_Stop
1652(
1653 WDI_StopReqParamsType* pwdiStopParams,
1654 WDI_StopRspCb wdiStopRspCb,
1655 void* pUserData
1656)
1657{
1658 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001659 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1661
1662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 ------------------------------------------------------------------------*/
1665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1666 {
1667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1668 "WDI API call before module is initialized - Fail request");
1669
Jeff Johnsone7245742012-09-05 17:12:55 -07001670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 }
1672
Jeff Johnson43971f52012-07-17 12:26:56 -07001673 /*Access to the global state must be locked before cleaning */
1674 wpalMutexAcquire(&pWDICtx->wptMutex);
1675
1676 /*Clear all pending request*/
1677 WDI_ClearPendingRequests(pWDICtx);
1678
1679 /*We have completed cleaning unlock now*/
1680 wpalMutexRelease(&pWDICtx->wptMutex);
1681
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 /* Free the global variables */
1683 wpalMemoryFree(gpHostWlanFeatCaps);
1684 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001685 gpHostWlanFeatCaps = NULL;
1686 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001687
1688 /*------------------------------------------------------------------------
1689 Fill in Event data and post to the Main FSM
1690 ------------------------------------------------------------------------*/
1691 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001692 wdiEventData.pEventData = pwdiStopParams;
1693 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1694 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 wdiEventData.pUserData = pUserData;
1696
1697 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1698
1699}/*WDI_Stop*/
1700
1701
1702
1703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001704 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 needs to interact with DAL. DAL will free its control
1706 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001707
1708 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001709
1710 WDI_Stop must have been called.
1711
1712 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001713
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 @see WDI_Stop
1715 @return Result of the function call
1716*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001718WDI_Close
1719(
1720 void
1721)
1722{
1723 wpt_uint8 i;
1724 WDI_EventInfoType wdiEventData;
1725 wpt_status wptStatus;
1726 wpt_status eventStatus;
1727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1728
1729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 ------------------------------------------------------------------------*/
1732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1733 {
1734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1735 "WDI API call before module is initialized - Fail request");
1736
Jeff Johnsone7245742012-09-05 17:12:55 -07001737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 }
1739
1740 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1741 (the control transport will be closed by the FSM and we'll want
1742 to wait until that completes)*/
1743 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 {
1746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001747 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 /* fall through and try to finish closing via the FSM */
1749 }
1750
1751 /*------------------------------------------------------------------------
1752 Fill in Event data and post to the Main FSM
1753 ------------------------------------------------------------------------*/
1754 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 wdiEventData.pEventData = NULL;
1756 wdiEventData.uEventDataSize = 0;
1757 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 wdiEventData.pUserData = NULL;
1759
1760 gWDIInitialized = eWLAN_PAL_FALSE;
1761
1762 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1763
1764 /*Wait for WCTS to close the control transport
1765 (but only if we were able to reset the event flag*/
1766 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1767 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 WDI_WCTS_ACTION_TIMEOUT);
1770 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1771 {
1772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001773 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001774 }
1775 }
1776
1777 /* Destroy the WCTS action event */
1778 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1779 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1780 {
1781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1782 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001784 }
1785
1786 /* Destroy the Set Power State event */
1787 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1788 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1789 {
1790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1791 "WDI Close failed to destroy an event");
1792
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 }
1795
1796 /*------------------------------------------------------------------------
1797 Closes the Data Path Utility Module
1798 ------------------------------------------------------------------------*/
1799 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1800 {
1801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1802 "WDI Init failed to close the DP Util Module");
1803
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001805 }
1806
1807 /*destroy the BSS sessions pending Queue */
1808 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1809 {
1810 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1811 }
1812
1813 /* destroy the WDI Pending Assoc Id Request Queue*/
1814 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1815
1816 /* destroy the WDI Pending Request Queue*/
1817 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001818
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 /*destroy the response timer */
1820 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1821
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001822 /*destroy the SSR timer */
1823 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1824
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 /*invalidate the main synchro mutex */
1826 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1827 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1828 {
1829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1830 "Failed to delete mutex %d", wptStatus);
1831 WDI_ASSERT(0);
1832 }
1833
1834 /*Clear control block. note that this will clear the "magic"
1835 which will inhibit all asynchronous callbacks*/
1836 WDI_CleanCB(&gWDICb);
1837
1838 return wptStatus;
1839
1840}/*WDI_Close*/
1841
1842/**
1843 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1844 This will do most of the WDI stop & close
1845 operations without doing any handshake with Riva
1846
1847 This will also make sure that the control transport
1848 will NOT be closed.
1849
1850 This request will not be queued.
1851
1852
1853 WDI_Start must have been called.
1854
1855 @param closeTransport: Close control channel if this is set
1856
1857 @return Result of the function call
1858*/
1859WDI_Status
1860WDI_Shutdown
1861(
1862 wpt_boolean closeTransport
1863)
1864{
1865 WDI_EventInfoType wdiEventData;
1866 wpt_status wptStatus;
1867 int i = 0;
1868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1869
1870 /*------------------------------------------------------------------------
1871 Sanity Check
1872 ------------------------------------------------------------------------*/
1873 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1874 {
1875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1876 "WDI API call before module is initialized - Fail request");
1877
1878 return WDI_STATUS_E_NOT_ALLOWED;
1879 }
1880
1881 /*------------------------------------------------------------------------
1882 Fill in Event data and post to the Main FSM
1883 ------------------------------------------------------------------------*/
1884 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1885 wdiEventData.pEventData = NULL;
1886 wdiEventData.uEventDataSize = 0;
1887
1888 /* Shutdown will not be queued, if the state is busy timer will be
1889 * stopped & this message will be processed.*/
1890 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1891 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1892 {
1893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001894 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 }
1896 /* Destroy the Set Power State event */
1897 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1898 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1899 {
1900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1901 "WDI Close failed to destroy an event");
1902
1903 WDI_ASSERT(0);
1904 }
1905 /*------------------------------------------------------------------------
1906 Closes the Data Path Utility Module
1907 ------------------------------------------------------------------------*/
1908 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1911 "WDI Init failed to close the DP Util Module");
1912
1913 WDI_ASSERT(0);
1914 }
1915 if ( closeTransport )
1916 {
1917 /* Close control transport, called from module unload */
1918 WCTS_CloseTransport(gWDICb.wctsHandle);
1919 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001920 else
1921 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001922 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001923 the pending messages in the transport queue */
1924 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1925 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 /*destroy the BSS sessions pending Queue */
1927 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1928 {
1929 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1930 }
1931
1932 /* destroy the WDI Pending Assoc Id Request Queue*/
1933 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1934 /* destroy the WDI Pending Request Queue*/
1935 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1936 /*destroy the response timer */
1937 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001938 /*destroy the SSR timer */
1939 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001940
1941 /*invalidate the main synchro mutex */
1942 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1943 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1944 {
1945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001946 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001947 WDI_ASSERT(0);
1948 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001949 /* Free the global variables */
1950 wpalMemoryFree(gpHostWlanFeatCaps);
1951 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001952 gpHostWlanFeatCaps = NULL;
1953 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001954 /*Clear control block. note that this will clear the "magic"
1955 which will inhibit all asynchronous callbacks*/
1956 WDI_CleanCB(&gWDICb);
1957 return wptStatus;
1958
1959}/*WDI_Shutdown*/
1960
1961
Jeff Johnsone7245742012-09-05 17:12:55 -07001962/*========================================================================
1963
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001965
Jeff Johnson295189b2012-06-20 16:38:30 -07001966==========================================================================*/
1967
1968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001969 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001970 the WLAN Device to get ready for a scan procedure. Upon
1971 the call of this API the WLAN DAL will pack and send a
1972 HAL Init Scan request message to the lower RIVA
1973 sub-system if DAL is in state STARTED.
1974
1975 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001976 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001977
1978 WDI_Start must have been called.
1979
1980 @param wdiInitScanParams: the init scan parameters as specified
1981 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001982
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 wdiInitScanRspCb: callback for passing back the response
1984 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001985
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 callback
1988
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 @see WDI_Start
1990 @return Result of the function call
1991*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001993WDI_InitScanReq
1994(
1995 WDI_InitScanReqParamsType* pwdiInitScanParams,
1996 WDI_InitScanRspCb wdiInitScanRspCb,
1997 void* pUserData
1998)
1999{
2000 WDI_EventInfoType wdiEventData;
2001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2002
2003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002005 ------------------------------------------------------------------------*/
2006 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2007 {
2008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2009 "WDI API call before module is initialized - Fail request");
2010
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 }
2013
2014 /*------------------------------------------------------------------------
2015 Fill in Event data and post to the Main FSM
2016 ------------------------------------------------------------------------*/
2017 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 wdiEventData.pEventData = pwdiInitScanParams;
2019 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2020 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 wdiEventData.pUserData = pUserData;
2022
2023 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2024
2025}/*WDI_InitScanReq*/
2026
2027/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 wishes to change the Scan channel on the WLAN Device.
2030 Upon the call of this API the WLAN DAL will pack and
2031 send a HAL Start Scan request message to the lower RIVA
2032 sub-system if DAL is in state STARTED.
2033
2034 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002036
2037 WDI_InitScanReq must have been called.
2038
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002041
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wdiStartScanRspCb: callback for passing back the
2043 response of the start scan operation received from the
2044 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002045
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002047 callback
2048
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 @see WDI_InitScanReq
2050 @return Result of the function call
2051*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002052WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002053WDI_StartScanReq
2054(
2055 WDI_StartScanReqParamsType* pwdiStartScanParams,
2056 WDI_StartScanRspCb wdiStartScanRspCb,
2057 void* pUserData
2058)
2059{
2060 WDI_EventInfoType wdiEventData;
2061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2062
2063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002065 ------------------------------------------------------------------------*/
2066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2067 {
2068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2069 "WDI API call before module is initialized - Fail request");
2070
Jeff Johnsone7245742012-09-05 17:12:55 -07002071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002072 }
2073
2074 /*------------------------------------------------------------------------
2075 Fill in Event data and post to the Main FSM
2076 ------------------------------------------------------------------------*/
2077 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 wdiEventData.pEventData = pwdiStartScanParams;
2079 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2080 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 wdiEventData.pUserData = pUserData;
2082
2083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2084
2085}/*WDI_StartScanReq*/
2086
2087
2088/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002089 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002090 wants to end scanning for a particular channel that it
2091 had set before by calling Scan Start on the WLAN Device.
2092 Upon the call of this API the WLAN DAL will pack and
2093 send a HAL End Scan request message to the lower RIVA
2094 sub-system if DAL is in state STARTED.
2095
2096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002098
2099 WDI_StartScanReq must have been called.
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002103
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiEndScanRspCb: callback for passing back the response
2105 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002106
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 callback
2109
Jeff Johnson295189b2012-06-20 16:38:30 -07002110 @see WDI_StartScanReq
2111 @return Result of the function call
2112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002114WDI_EndScanReq
2115(
2116 WDI_EndScanReqParamsType* pwdiEndScanParams,
2117 WDI_EndScanRspCb wdiEndScanRspCb,
2118 void* pUserData
2119)
2120{
2121 WDI_EventInfoType wdiEventData;
2122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2123
2124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002126 ------------------------------------------------------------------------*/
2127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2128 {
2129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2130 "WDI API call before module is initialized - Fail request");
2131
Jeff Johnsone7245742012-09-05 17:12:55 -07002132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 }
2134
2135 /*------------------------------------------------------------------------
2136 Fill in Event data and post to the Main FSM
2137 ------------------------------------------------------------------------*/
2138 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 wdiEventData.pEventData = pwdiEndScanParams;
2140 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2141 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 wdiEventData.pUserData = pUserData;
2143
2144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2145
2146}/*WDI_EndScanReq*/
2147
2148
2149/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002150 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 completed the scan process on the WLAN Device. Upon the
2152 call of this API the WLAN DAL will pack and send a HAL
2153 Finish Scan Request request message to the lower RIVA
2154 sub-system if DAL is in state STARTED.
2155
2156 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002158
2159 WDI_InitScanReq must have been called.
2160
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002163
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 wdiFinishScanRspCb: callback for passing back the
2165 response of the finish scan operation received from the
2166 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002167
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002169 callback
2170
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 @see WDI_InitScanReq
2172 @return Result of the function call
2173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002175WDI_FinishScanReq
2176(
2177 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2178 WDI_FinishScanRspCb wdiFinishScanRspCb,
2179 void* pUserData
2180)
2181{
2182 WDI_EventInfoType wdiEventData;
2183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2184
2185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 ------------------------------------------------------------------------*/
2188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2191 "WDI API call before module is initialized - Fail request");
2192
Jeff Johnsone7245742012-09-05 17:12:55 -07002193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002194 }
2195
2196 /*------------------------------------------------------------------------
2197 Fill in Event data and post to the Main FSM
2198 ------------------------------------------------------------------------*/
2199 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002200 wdiEventData.pEventData = pwdiFinishScanParams;
2201 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2202 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 wdiEventData.pUserData = pUserData;
2204
2205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2206
2207}/*WDI_FinishScanReq*/
2208
Jeff Johnsone7245742012-09-05 17:12:55 -07002209/*========================================================================
2210
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002212
Jeff Johnson295189b2012-06-20 16:38:30 -07002213==========================================================================*/
2214
2215/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002216 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 to start an association procedure to a BSS. Upon the
2218 call of this API the WLAN DAL will pack and send a HAL
2219 Join request message to the lower RIVA sub-system if
2220 DAL is in state STARTED.
2221
2222 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002224
2225 WDI_Start must have been called.
2226
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 wdiJoinRspCb: callback for passing back the response of
2231 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002232
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002234 callback
2235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 @see WDI_Start
2237 @return Result of the function call
2238*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002239WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002240WDI_JoinReq
2241(
2242 WDI_JoinReqParamsType* pwdiJoinParams,
2243 WDI_JoinRspCb wdiJoinRspCb,
2244 void* pUserData
2245)
2246{
2247 WDI_EventInfoType wdiEventData;
2248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2249
2250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002252 ------------------------------------------------------------------------*/
2253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2254 {
2255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2256 "WDI API call before module is initialized - Fail request");
2257
Jeff Johnsone7245742012-09-05 17:12:55 -07002258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 }
2260
2261 /*------------------------------------------------------------------------
2262 Fill in Event data and post to the Main FSM
2263 ------------------------------------------------------------------------*/
2264 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002265 wdiEventData.pEventData = pwdiJoinParams;
2266 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2267 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002268 wdiEventData.pUserData = pUserData;
2269
2270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2271
2272}/*WDI_JoinReq*/
2273
2274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 wishes to configure the newly acquired or in process of
2277 being acquired BSS to the HW . Upon the call of this API
2278 the WLAN DAL will pack and send a HAL Config BSS request
2279 message to the lower RIVA sub-system if DAL is in state
2280 STARTED.
2281
2282 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002284
2285 WDI_JoinReq must have been called.
2286
Jeff Johnsone7245742012-09-05 17:12:55 -07002287 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 wdiConfigBSSRspCb: callback for passing back the
2291 response of the config BSS operation received from the
2292 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002293
Jeff Johnson295189b2012-06-20 16:38:30 -07002294 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002295 callback
2296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 @see WDI_JoinReq
2298 @return Result of the function call
2299*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002300WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002301WDI_ConfigBSSReq
2302(
2303 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2304 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2305 void* pUserData
2306)
2307{
2308 WDI_EventInfoType wdiEventData;
2309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2310
2311 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 ------------------------------------------------------------------------*/
2314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2315 {
2316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2317 "WDI API call before module is initialized - Fail request");
2318
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002320 }
2321
2322 /*------------------------------------------------------------------------
2323 Fill in Event data and post to the Main FSM
2324 ------------------------------------------------------------------------*/
2325 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002326 wdiEventData.pEventData = pwdiConfigBSSParams;
2327 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2328 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002329 wdiEventData.pUserData = pUserData;
2330
2331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2332
2333}/*WDI_ConfigBSSReq*/
2334
2335/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 disassociating from the BSS and wishes to notify HW.
2338 Upon the call of this API the WLAN DAL will pack and
2339 send a HAL Del BSS request message to the lower RIVA
2340 sub-system if DAL is in state STARTED.
2341
2342 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002344
2345 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2346
Jeff Johnsone7245742012-09-05 17:12:55 -07002347 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 wdiDelBSSRspCb: callback for passing back the response
2351 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 callback
2355
2356 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 @return Result of the function call
2358*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002359WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002360WDI_DelBSSReq
2361(
2362 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2363 WDI_DelBSSRspCb wdiDelBSSRspCb,
2364 void* pUserData
2365)
2366{
2367 WDI_EventInfoType wdiEventData;
2368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2369
2370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002372 ------------------------------------------------------------------------*/
2373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2374 {
2375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2376 "WDI API call before module is initialized - Fail request");
2377
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 }
2380
2381 /*------------------------------------------------------------------------
2382 Fill in Event data and post to the Main FSM
2383 ------------------------------------------------------------------------*/
2384 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 wdiEventData.pEventData = pwdiDelBSSParams;
2386 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2387 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 wdiEventData.pUserData = pUserData;
2389
2390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2391
2392}/*WDI_DelBSSReq*/
2393
2394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 associated to a BSS and wishes to configure HW for
2397 associated state. Upon the call of this API the WLAN DAL
2398 will pack and send a HAL Post Assoc request message to
2399 the lower RIVA sub-system if DAL is in state STARTED.
2400
2401 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002403
2404 WDI_JoinReq must have been called.
2405
2406 @param wdiPostAssocReqParams: the assoc parameters as specified
2407 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002408
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 wdiPostAssocRspCb: callback for passing back the
2410 response of the post assoc operation received from the
2411 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002412
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002414 callback
2415
Jeff Johnson295189b2012-06-20 16:38:30 -07002416 @see WDI_JoinReq
2417 @return Result of the function call
2418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002420WDI_PostAssocReq
2421(
2422 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2423 WDI_PostAssocRspCb wdiPostAssocRspCb,
2424 void* pUserData
2425)
2426{
2427 WDI_EventInfoType wdiEventData;
2428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2429
2430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002432 ------------------------------------------------------------------------*/
2433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2434 {
2435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2436 "WDI API call before module is initialized - Fail request");
2437
Jeff Johnsone7245742012-09-05 17:12:55 -07002438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 }
2440
2441 /*------------------------------------------------------------------------
2442 Fill in Event data and post to the Main FSM
2443 ------------------------------------------------------------------------*/
2444 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002445 wdiEventData.pEventData = pwdiPostAssocReqParams;
2446 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2447 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 wdiEventData.pUserData = pUserData;
2449
2450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2451
2452}/*WDI_PostAssocReq*/
2453
2454/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 association with another STA has ended and the station
2457 must be deleted from HW. Upon the call of this API the
2458 WLAN DAL will pack and send a HAL Del STA request
2459 message to the lower RIVA sub-system if DAL is in state
2460 STARTED.
2461
2462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002464
2465 WDI_PostAssocReq must have been called.
2466
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002469
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 wdiDelSTARspCb: callback for passing back the response
2471 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002472
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 callback
2475
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 @see WDI_PostAssocReq
2477 @return Result of the function call
2478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002480WDI_DelSTAReq
2481(
2482 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2483 WDI_DelSTARspCb wdiDelSTARspCb,
2484 void* pUserData
2485)
2486{
2487 WDI_EventInfoType wdiEventData;
2488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2489
2490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002492 ------------------------------------------------------------------------*/
2493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2494 {
2495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2496 "WDI API call before module is initialized - Fail request");
2497
Jeff Johnsone7245742012-09-05 17:12:55 -07002498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 }
2500
2501 /*------------------------------------------------------------------------
2502 Fill in Event data and post to the Main FSM
2503 ------------------------------------------------------------------------*/
2504 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 wdiEventData.pEventData = pwdiDelSTAParams;
2506 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2507 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002508 wdiEventData.pUserData = pUserData;
2509
2510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2511
2512}/*WDI_DelSTAReq*/
2513
Jeff Johnsone7245742012-09-05 17:12:55 -07002514/*========================================================================
2515
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002517
Jeff Johnson295189b2012-06-20 16:38:30 -07002518==========================================================================*/
2519
2520/**
2521 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2522 install a BSS encryption key on the HW. Upon the call of this
2523 API the WLAN DAL will pack and send a Set BSS Key request
2524 message to the lower RIVA sub-system if DAL is in state
2525 STARTED.
2526
2527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002529
2530 WDI_PostAssocReq must have been called.
2531
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 wdiSetBSSKeyRspCb: callback for passing back the
2536 response of the set BSS Key operation received from the
2537 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002538
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 callback
2541
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 @see WDI_PostAssocReq
2543 @return Result of the function call
2544*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002545WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002546WDI_SetBSSKeyReq
2547(
2548 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2549 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2550 void* pUserData
2551)
2552{
2553 WDI_EventInfoType wdiEventData;
2554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2555
2556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002558 ------------------------------------------------------------------------*/
2559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2560 {
2561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2562 "WDI API call before module is initialized - Fail request");
2563
Jeff Johnsone7245742012-09-05 17:12:55 -07002564 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 }
2566
2567 /*------------------------------------------------------------------------
2568 Fill in Event data and post to the Main FSM
2569 ------------------------------------------------------------------------*/
2570 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2572 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2573 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 wdiEventData.pUserData = pUserData;
2575
2576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2577
2578}/*WDI_SetBSSKeyReq*/
2579
2580/**
2581 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2582 uninstall a BSS key from HW. Upon the call of this API the
2583 WLAN DAL will pack and send a HAL Remove BSS Key request
2584 message to the lower RIVA sub-system if DAL is in state
2585 STARTED.
2586
2587 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002589
2590 WDI_SetBSSKeyReq must have been called.
2591
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002593 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002594
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 wdiRemoveBSSKeyRspCb: callback for passing back the
2596 response of the remove BSS key operation received from
2597 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002598
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 callback
2601
Jeff Johnson295189b2012-06-20 16:38:30 -07002602 @see WDI_SetBSSKeyReq
2603 @return Result of the function call
2604*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002605WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002606WDI_RemoveBSSKeyReq
2607(
2608 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2609 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2610 void* pUserData
2611)
2612{
2613 WDI_EventInfoType wdiEventData;
2614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2615
2616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 ------------------------------------------------------------------------*/
2619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2620 {
2621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2622 "WDI API call before module is initialized - Fail request");
2623
Jeff Johnsone7245742012-09-05 17:12:55 -07002624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 }
2626
2627 /*------------------------------------------------------------------------
2628 Fill in Event data and post to the Main FSM
2629 ------------------------------------------------------------------------*/
2630 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2632 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2633 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 wdiEventData.pUserData = pUserData;
2635
2636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2637
2638}/*WDI_RemoveBSSKeyReq*/
2639
2640
2641/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 ready to install a STA(ast) encryption key in HW. Upon
2644 the call of this API the WLAN DAL will pack and send a
2645 HAL Set STA Key request message to the lower RIVA
2646 sub-system if DAL is in state STARTED.
2647
2648 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002650
2651 WDI_PostAssocReq must have been called.
2652
Jeff Johnsone7245742012-09-05 17:12:55 -07002653 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002655
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 wdiSetSTAKeyRspCb: callback for passing back the
2657 response of the set STA key operation received from the
2658 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002659
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 callback
2662
Jeff Johnson295189b2012-06-20 16:38:30 -07002663 @see WDI_PostAssocReq
2664 @return Result of the function call
2665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002667WDI_SetSTAKeyReq
2668(
2669 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2670 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2671 void* pUserData
2672)
2673{
2674 WDI_EventInfoType wdiEventData;
2675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2676
2677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 ------------------------------------------------------------------------*/
2680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2681 {
2682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2683 "WDI API call before module is initialized - Fail request");
2684
Jeff Johnsone7245742012-09-05 17:12:55 -07002685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002686 }
2687
2688 /*------------------------------------------------------------------------
2689 Fill in Event data and post to the Main FSM
2690 ------------------------------------------------------------------------*/
2691 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2693 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2694 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 wdiEventData.pUserData = pUserData;
2696
2697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2698
2699}/*WDI_SetSTAKeyReq*/
2700
2701
2702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 wants to uninstall a previously set STA key in HW. Upon
2705 the call of this API the WLAN DAL will pack and send a
2706 HAL Remove STA Key request message to the lower RIVA
2707 sub-system if DAL is in state STARTED.
2708
2709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002711
2712 WDI_SetSTAKeyReq must have been called.
2713
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 wdiRemoveSTAKeyRspCb: callback for passing back the
2718 response of the remove STA key operation received from
2719 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002720
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002722 callback
2723
Jeff Johnson295189b2012-06-20 16:38:30 -07002724 @see WDI_SetSTAKeyReq
2725 @return Result of the function call
2726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002728WDI_RemoveSTAKeyReq
2729(
2730 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2731 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2732 void* pUserData
2733)
2734{
2735 WDI_EventInfoType wdiEventData;
2736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2737
2738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 ------------------------------------------------------------------------*/
2741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2742 {
2743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2744 "WDI API call before module is initialized - Fail request");
2745
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 }
2748
2749 /*------------------------------------------------------------------------
2750 Fill in Event data and post to the Main FSM
2751 ------------------------------------------------------------------------*/
2752 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2754 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2755 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 wdiEventData.pUserData = pUserData;
2757
2758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2759
2760}/*WDI_RemoveSTAKeyReq*/
2761
2762
2763/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 wants to install a STA Bcast encryption key on the HW.
2766 Upon the call of this API the WLAN DAL will pack and
2767 send a HAL Start request message to the lower RIVA
2768 sub-system if DAL is in state STARTED.
2769
2770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002772
2773 WDI_PostAssocReq must have been called.
2774
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002777
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 wdiSetSTABcastKeyRspCb: callback for passing back the
2779 response of the set BSS Key operation received from the
2780 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002781
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 callback
2784
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 @see WDI_PostAssocReq
2786 @return Result of the function call
2787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002789WDI_SetSTABcastKeyReq
2790(
2791 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2792 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2793 void* pUserData
2794)
2795
2796{
2797 WDI_EventInfoType wdiEventData;
2798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2799
2800 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002801 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 ------------------------------------------------------------------------*/
2803 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2804 {
2805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2806 "WDI API call before module is initialized - Fail request");
2807
Jeff Johnsone7245742012-09-05 17:12:55 -07002808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 }
2810
2811 /*------------------------------------------------------------------------
2812 Fill in Event data and post to the Main FSM
2813 ------------------------------------------------------------------------*/
2814 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2816 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2817 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 wdiEventData.pUserData = pUserData;
2819
2820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2821
2822}/*WDI_SetSTABcastKeyReq*/
2823
2824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 MAC wants to uninstall a STA Bcast key from HW. Upon the
2827 call of this API the WLAN DAL will pack and send a HAL
2828 Remove STA Bcast Key request message to the lower RIVA
2829 sub-system if DAL is in state STARTED.
2830
2831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002833
2834 WDI_SetSTABcastKeyReq must have been called.
2835
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 parameters as specified by the Device
2838 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002839
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2841 response of the remove STA Bcast key operation received
2842 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 callback
2846
Jeff Johnson295189b2012-06-20 16:38:30 -07002847 @see WDI_SetSTABcastKeyReq
2848 @return Result of the function call
2849*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002850WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002851WDI_RemoveSTABcastKeyReq
2852(
2853 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2854 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2855 void* pUserData
2856)
2857{
2858 WDI_EventInfoType wdiEventData;
2859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2860
2861 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 ------------------------------------------------------------------------*/
2864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2865 {
2866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2867 "WDI API call before module is initialized - Fail request");
2868
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 }
2871
2872 /*------------------------------------------------------------------------
2873 Fill in Event data and post to the Main FSM
2874 ------------------------------------------------------------------------*/
2875 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2877 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2878 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wdiEventData.pUserData = pUserData;
2880
2881 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2882
2883}/*WDI_RemoveSTABcastKeyReq*/
2884
2885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 MAC wants to set Max Tx Power to HW. Upon the
2888 call of this API the WLAN DAL will pack and send a HAL
2889 Remove STA Bcast Key request message to the lower RIVA
2890 sub-system if DAL is in state STARTED.
2891
2892 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002894
2895 WDI_SetSTABcastKeyReq must have been called.
2896
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002898 parameters as specified by the Device
2899 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002900
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2902 response of the remove STA Bcast key operation received
2903 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002904
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002906 callback
2907
Jeff Johnson295189b2012-06-20 16:38:30 -07002908 @see WDI_SetMaxTxPowerReq
2909 @return Result of the function call
2910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002912WDI_SetMaxTxPowerReq
2913(
2914 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2915 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2916 void* pUserData
2917)
2918{
2919 WDI_EventInfoType wdiEventData;
2920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2921
2922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002924 ------------------------------------------------------------------------*/
2925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2926 {
2927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2928 "WDI API call before module is initialized - Fail request");
2929
Jeff Johnsone7245742012-09-05 17:12:55 -07002930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 }
2932
2933 /*------------------------------------------------------------------------
2934 Fill in Event data and post to the Main FSM
2935 ------------------------------------------------------------------------*/
2936 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2938 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2939 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 wdiEventData.pUserData = pUserData;
2941
2942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2943}
2944
schangd82195a2013-03-13 18:41:24 -07002945/**
Arif Hussainfc753992013-08-09 15:09:58 -07002946 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2947 MAC wants to set Max Tx Power to HW for specific band.
2948
2949 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2950
2951 wdiReqStatusCb: callback for passing back the
2952 response msg from the device
2953
2954 pUserData: user data will be passed back with the
2955 callback
2956
2957 @see WDI_SetMaxTxPowerPerBandReq
2958 @return Result of the function call
2959*/
2960WDI_Status
2961WDI_SetMaxTxPowerPerBandReq
2962(
2963 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2964 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2965 void* pUserData
2966)
2967{
2968 WDI_EventInfoType wdiEventData;
2969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2970
2971 /*------------------------------------------------------------------------
2972 Sanity Check
2973 ------------------------------------------------------------------------*/
2974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2975 {
2976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2977 "WDI API call before module is initialized - Fail request");
2978
2979 return WDI_STATUS_E_NOT_ALLOWED;
2980 }
2981
2982 /*------------------------------------------------------------------------
2983 Fill in Event data and post to the Main FSM
2984 ------------------------------------------------------------------------*/
2985 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2986 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2987 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2988 wdiEventData.pCBfnc = wdiReqStatusCb;
2989 wdiEventData.pUserData = pUserData;
2990
2991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2992}
2993
2994/**
schangd82195a2013-03-13 18:41:24 -07002995 @brief WDI_SetTxPowerReq will be called when the upper
2996 MAC wants to set Tx Power to HW.
2997 In state BUSY this request will be queued. Request won't
2998 be allowed in any other state.
2999
3000
3001 @param pwdiSetTxPowerParams: set TS Power parameters
3002 BSSID and target TX Power with dbm included
3003
3004 wdiReqStatusCb: callback for passing back the response
3005
3006 pUserData: user data will be passed back with the
3007 callback
3008
3009 @return Result of the function call
3010*/
3011WDI_Status
3012WDI_SetTxPowerReq
3013(
3014 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3015 WDA_SetTxPowerRspCb wdiReqStatusCb,
3016 void* pUserData
3017)
3018{
3019 WDI_EventInfoType wdiEventData;
3020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3021
3022 /*------------------------------------------------------------------------
3023 Sanity Check
3024 ------------------------------------------------------------------------*/
3025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3026 {
3027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3028 "WDI API call before module is initialized - Fail request");
3029
3030 return WDI_STATUS_E_NOT_ALLOWED;
3031 }
3032
3033 /*------------------------------------------------------------------------
3034 Fill in Event data and post to the Main FSM
3035 ------------------------------------------------------------------------*/
3036 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3037 wdiEventData.pEventData = pwdiSetTxPowerParams;
3038 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3039 wdiEventData.pCBfnc = wdiReqStatusCb;
3040 wdiEventData.pUserData = pUserData;
3041
3042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3043}
3044
Jeff Johnson295189b2012-06-20 16:38:30 -07003045#ifdef FEATURE_WLAN_CCX
3046WDI_Status
3047WDI_TSMStatsReq
3048(
3049 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3050 WDI_TsmRspCb wdiReqStatusCb,
3051 void* pUserData
3052)
3053{
3054 WDI_EventInfoType wdiEventData;
3055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 /*------------------------------------------------------------------------
3057 Sanity Check
3058 ------------------------------------------------------------------------*/
3059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3060 {
3061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3062 "WDI API call before module is initialized - Fail request");
3063
3064 return WDI_STATUS_E_NOT_ALLOWED;
3065 }
3066
3067 /*------------------------------------------------------------------------
3068 Fill in Event data and post to the Main FSM
3069 ------------------------------------------------------------------------*/
3070 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3071 wdiEventData.pEventData = pwdiTsmReqParams;
3072 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3073 wdiEventData.pCBfnc = wdiReqStatusCb;
3074 wdiEventData.pUserData = pUserData;
3075
3076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3077
3078}
3079#endif
3080
3081/*========================================================================
3082
3083 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085==========================================================================*/
3086
3087/**
3088 @brief WDI_AddTSReq will be called when the upper MAC to inform
3089 the device of a successful add TSpec negotiation. HW
3090 needs to receive the TSpec Info from the UMAC in order
3091 to configure properly the QoS data traffic. Upon the
3092 call of this API the WLAN DAL will pack and send a HAL
3093 Add TS request message to the lower RIVA sub-system if
3094 DAL is in state STARTED.
3095
3096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003098
3099 WDI_PostAssocReq must have been called.
3100
3101 @param wdiAddTsReqParams: the add TS parameters as specified by
3102 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003103
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 wdiAddTsRspCb: callback for passing back the response of
3105 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003106
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 callback
3109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 @see WDI_PostAssocReq
3111 @return Result of the function call
3112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003114WDI_AddTSReq
3115(
3116 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3117 WDI_AddTsRspCb wdiAddTsRspCb,
3118 void* pUserData
3119)
3120{
3121 WDI_EventInfoType wdiEventData;
3122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3123
3124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 ------------------------------------------------------------------------*/
3127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3128 {
3129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3130 "WDI API call before module is initialized - Fail request");
3131
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 }
3134
3135 /*------------------------------------------------------------------------
3136 Fill in Event data and post to the Main FSM
3137 ------------------------------------------------------------------------*/
3138 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 wdiEventData.pEventData = pwdiAddTsReqParams;
3140 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3141 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 wdiEventData.pUserData = pUserData;
3143
3144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3145
3146}/*WDI_AddTSReq*/
3147
3148
3149
3150/**
3151 @brief WDI_DelTSReq will be called when the upper MAC has ended
3152 admission on a specific AC. This is to inform HW that
3153 QoS traffic parameters must be rest. Upon the call of
3154 this API the WLAN DAL will pack and send a HAL Del TS
3155 request message to the lower RIVA sub-system if DAL is
3156 in state STARTED.
3157
3158 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003160
3161 WDI_AddTSReq must have been called.
3162
3163 @param wdiDelTsReqParams: the del TS parameters as specified by
3164 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003165
Jeff Johnson295189b2012-06-20 16:38:30 -07003166 wdiDelTsRspCb: callback for passing back the response of
3167 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003168
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 callback
3171
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 @see WDI_AddTSReq
3173 @return Result of the function call
3174*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003175WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003176WDI_DelTSReq
3177(
3178 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3179 WDI_DelTsRspCb wdiDelTsRspCb,
3180 void* pUserData
3181)
3182{
3183 WDI_EventInfoType wdiEventData;
3184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3185
3186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003188 ------------------------------------------------------------------------*/
3189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3190 {
3191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3192 "WDI API call before module is initialized - Fail request");
3193
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 }
3196
3197 /*------------------------------------------------------------------------
3198 Fill in Event data and post to the Main FSM
3199 ------------------------------------------------------------------------*/
3200 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 wdiEventData.pEventData = pwdiDelTsReqParams;
3202 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3203 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003204 wdiEventData.pUserData = pUserData;
3205
3206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3207
3208}/*WDI_DelTSReq*/
3209
3210
3211
3212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003214 wishes to update the EDCA parameters used by HW for QoS
3215 data traffic. Upon the call of this API the WLAN DAL
3216 will pack and send a HAL Update EDCA Params request
3217 message to the lower RIVA sub-system if DAL is in state
3218 STARTED.
3219
3220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003222
3223 WDI_PostAssocReq must have been called.
3224
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003227
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 wdiUpdateEDCAParamsRspCb: callback for passing back the
3229 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003230
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 callback
3233
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 @see WDI_PostAssocReq
3235 @return Result of the function call
3236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003238WDI_UpdateEDCAParams
3239(
3240 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3241 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3242 void* pUserData
3243)
3244{
3245 WDI_EventInfoType wdiEventData;
3246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3247
3248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 ------------------------------------------------------------------------*/
3251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3252 {
3253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3254 "WDI API call before module is initialized - Fail request");
3255
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 }
3258
3259 /*------------------------------------------------------------------------
3260 Fill in Event data and post to the Main FSM
3261 ------------------------------------------------------------------------*/
3262 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3264 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3265 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 wdiEventData.pUserData = pUserData;
3267
3268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3269
3270}/*WDI_UpdateEDCAParams*/
3271
3272
3273/**
3274 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3275 successfully a BA session and needs to notify the HW for
3276 the appropriate settings to take place. Upon the call of
3277 this API the WLAN DAL will pack and send a HAL Add BA
3278 request message to the lower RIVA sub-system if DAL is
3279 in state STARTED.
3280
3281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003283
3284 WDI_PostAssocReq must have been called.
3285
3286 @param wdiAddBAReqParams: the add BA parameters as specified by
3287 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 wdiAddBARspCb: callback for passing back the response of
3290 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003293 callback
3294
Jeff Johnson295189b2012-06-20 16:38:30 -07003295 @see WDI_PostAssocReq
3296 @return Result of the function call
3297*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003298WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003299WDI_AddBASessionReq
3300(
3301 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3302 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3303 void* pUserData
3304)
3305{
3306 WDI_EventInfoType wdiEventData;
3307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3308
3309 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003310 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 ------------------------------------------------------------------------*/
3312 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3313 {
3314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3315 "WDI API call before module is initialized - Fail request");
3316
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 }
3319
3320 /*------------------------------------------------------------------------
3321 Fill in Event data and post to the Main FSM
3322 ------------------------------------------------------------------------*/
3323 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003324 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3325 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3326 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 wdiEventData.pUserData = pUserData;
3328
3329 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3330
3331}/*WDI_AddBASessionReq*/
3332
3333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 inform HW that it has deleted a previously created BA
3336 session. Upon the call of this API the WLAN DAL will
3337 pack and send a HAL Del BA request message to the lower
3338 RIVA sub-system if DAL is in state STARTED.
3339
3340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003342
3343 WDI_AddBAReq must have been called.
3344
3345 @param wdiDelBAReqParams: the del BA parameters as specified by
3346 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 wdiDelBARspCb: callback for passing back the response of
3349 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 callback
3353
Jeff Johnson295189b2012-06-20 16:38:30 -07003354 @see WDI_AddBAReq
3355 @return Result of the function call
3356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003358WDI_DelBAReq
3359(
3360 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3361 WDI_DelBARspCb wdiDelBARspCb,
3362 void* pUserData
3363)
3364{
3365 WDI_EventInfoType wdiEventData;
3366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3367
3368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 ------------------------------------------------------------------------*/
3371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3372 {
3373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3374 "WDI API call before module is initialized - Fail request");
3375
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 }
3378
3379 /*------------------------------------------------------------------------
3380 Fill in Event data and post to the Main FSM
3381 ------------------------------------------------------------------------*/
3382 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 wdiEventData.pEventData = pwdiDelBAReqParams;
3384 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3385 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 wdiEventData.pUserData = pUserData;
3387
3388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3389
3390}/*WDI_DelBAReq*/
3391
Jeff Johnsone7245742012-09-05 17:12:55 -07003392/*========================================================================
3393
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003395
Jeff Johnson295189b2012-06-20 16:38:30 -07003396==========================================================================*/
3397
3398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 wants to set the power save related configurations of
3401 the WLAN Device. Upon the call of this API the WLAN DAL
3402 will pack and send a HAL Update CFG request message to
3403 the lower RIVA sub-system if DAL is in state STARTED.
3404
3405 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003407
3408 WDI_Start must have been called.
3409
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 wdiSetPwrSaveCfgCb: callback for passing back the
3414 response of the set power save cfg operation received
3415 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003416
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003418 callback
3419
Jeff Johnson295189b2012-06-20 16:38:30 -07003420 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 @return Result of the function call
3422*/
3423WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003424WDI_SetPwrSaveCfgReq
3425(
3426 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3427 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3428 void* pUserData
3429)
3430{
3431 WDI_EventInfoType wdiEventData;
3432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3433
3434 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003436 ------------------------------------------------------------------------*/
3437 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3438 {
3439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3440 "WDI API call before module is initialized - Fail request");
3441
Jeff Johnsone7245742012-09-05 17:12:55 -07003442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 }
3444
3445 /*------------------------------------------------------------------------
3446 Fill in Event data and post to the Main FSM
3447 ------------------------------------------------------------------------*/
3448 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 wdiEventData.pEventData = pwdiPowerSaveCfg;
3450 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3451 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003452 wdiEventData.pUserData = pUserData;
3453
3454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3455
3456}/*WDI_SetPwrSaveCfgReq*/
3457
3458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 request the device to get into IMPS power state. Upon
3461 the call of this API the WLAN DAL will send a HAL Enter
3462 IMPS request message to the lower RIVA sub-system if DAL
3463 is in state STARTED.
3464
3465 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003467
Jeff Johnsone7245742012-09-05 17:12:55 -07003468
3469 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 response of the Enter IMPS operation received from the
3471 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_Start
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_EnterImpsReq
3481(
3482 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3483 void* pUserData
3484)
3485{
3486 WDI_EventInfoType wdiEventData;
3487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3488
3489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 ------------------------------------------------------------------------*/
3492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3493 {
3494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3495 "WDI API call before module is initialized - Fail request");
3496
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 }
3499
3500 /*------------------------------------------------------------------------
3501 Fill in Event data and post to the Main FSM
3502 ------------------------------------------------------------------------*/
3503 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003504 wdiEventData.pEventData = NULL;
3505 wdiEventData.uEventDataSize = 0;
3506 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003507 wdiEventData.pUserData = pUserData;
3508
3509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3510
3511}/*WDI_EnterImpsReq*/
3512
3513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 request the device to get out of IMPS power state. Upon
3516 the call of this API the WLAN DAL will send a HAL Exit
3517 IMPS request message to the lower RIVA sub-system if DAL
3518 is in state STARTED.
3519
3520 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523
Jeff Johnsone7245742012-09-05 17:12:55 -07003524
3525 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003527
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 callback
3530
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 @see WDI_Start
3532 @return Result of the function call
3533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003535WDI_ExitImpsReq
3536(
3537 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3538 void* pUserData
3539)
3540{
3541 WDI_EventInfoType wdiEventData;
3542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3543
3544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 ------------------------------------------------------------------------*/
3547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3548 {
3549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3550 "WDI API call before module is initialized - Fail request");
3551
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 }
3554
3555 /*------------------------------------------------------------------------
3556 Fill in Event data and post to the Main FSM
3557 ------------------------------------------------------------------------*/
3558 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 wdiEventData.pEventData = NULL;
3560 wdiEventData.uEventDataSize = 0;
3561 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 wdiEventData.pUserData = pUserData;
3563
3564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3565
3566}/*WDI_ExitImpsReq*/
3567
3568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 request the device to get into BMPS power state. Upon
3571 the call of this API the WLAN DAL will pack and send a
3572 HAL Enter BMPS request message to the lower RIVA
3573 sub-system if DAL is in state STARTED.
3574
3575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003577
3578 WDI_PostAssocReq must have been called.
3579
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003582
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 wdiEnterBmpsRspCb: callback for passing back the
3584 response of the Enter BMPS operation received from the
3585 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003586
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003588 callback
3589
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 @see WDI_PostAssocReq
3591 @return Result of the function call
3592*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003593WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003594WDI_EnterBmpsReq
3595(
3596 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3597 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3598 void* pUserData
3599)
3600{
3601 WDI_EventInfoType wdiEventData;
3602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3603
3604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003605 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 ------------------------------------------------------------------------*/
3607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3608 {
3609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3610 "WDI API call before module is initialized - Fail request");
3611
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 }
3614
3615 /*------------------------------------------------------------------------
3616 Fill in Event data and post to the Main FSM
3617 ------------------------------------------------------------------------*/
3618 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3620 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3621 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 wdiEventData.pUserData = pUserData;
3623
3624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3625
3626}/*WDI_EnterBmpsReq*/
3627
3628/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 request the device to get out of BMPS power state. Upon
3631 the call of this API the WLAN DAL will pack and send a
3632 HAL Exit BMPS request message to the lower RIVA
3633 sub-system if DAL is in state STARTED.
3634
3635 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003637
3638 WDI_PostAssocReq must have been called.
3639
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiExitBmpsRspCb: callback for passing back the response
3644 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003645
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 callback
3648
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 @see WDI_PostAssocReq
3650 @return Result of the function call
3651*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003653WDI_ExitBmpsReq
3654(
3655 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3656 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3657 void* pUserData
3658)
3659{
3660 WDI_EventInfoType wdiEventData;
3661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3662
3663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 ------------------------------------------------------------------------*/
3666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3667 {
3668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3669 "WDI API call before module is initialized - Fail request");
3670
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 }
3673
3674 /*------------------------------------------------------------------------
3675 Fill in Event data and post to the Main FSM
3676 ------------------------------------------------------------------------*/
3677 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3679 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3680 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 wdiEventData.pUserData = pUserData;
3682
3683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3684
3685}/*WDI_ExitBmpsReq*/
3686
3687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 request the device to get into UAPSD power state. Upon
3690 the call of this API the WLAN DAL will pack and send a
3691 HAL Enter UAPSD request message to the lower RIVA
3692 sub-system if DAL is in state STARTED.
3693
3694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003696
3697 WDI_PostAssocReq must have been called.
3698 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003699
3700 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003702
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 wdiEnterUapsdRspCb: callback for passing back the
3704 response of the Enter UAPSD operation received from the
3705 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003706
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003708 callback
3709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3711 @return Result of the function call
3712*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003713WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003714WDI_EnterUapsdReq
3715(
3716 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3717 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3718 void* pUserData
3719)
3720{
3721 WDI_EventInfoType wdiEventData;
3722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3723
3724 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003726 ------------------------------------------------------------------------*/
3727 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3728 {
3729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3730 "WDI API call before module is initialized - Fail request");
3731
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 }
3734
3735 /*------------------------------------------------------------------------
3736 Fill in Event data and post to the Main FSM
3737 ------------------------------------------------------------------------*/
3738 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3740 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3741 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003742 wdiEventData.pUserData = pUserData;
3743
3744 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3745
3746}/*WDI_EnterUapsdReq*/
3747
3748/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 request the device to get out of UAPSD power state. Upon
3751 the call of this API the WLAN DAL will send a HAL Exit
3752 UAPSD request message to the lower RIVA sub-system if
3753 DAL is in state STARTED.
3754
3755 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003757
3758 WDI_PostAssocReq must have been called.
3759
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 response of the Exit UAPSD operation received from the
3762 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003763
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 callback
3766
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 @see WDI_PostAssocReq
3768 @return Result of the function call
3769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003771WDI_ExitUapsdReq
3772(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003773 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3775 void* pUserData
3776)
3777{
3778 WDI_EventInfoType wdiEventData;
3779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3780
3781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 ------------------------------------------------------------------------*/
3784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3785 {
3786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3787 "WDI API call before module is initialized - Fail request");
3788
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 }
3791
3792 /*------------------------------------------------------------------------
3793 Fill in Event data and post to the Main FSM
3794 ------------------------------------------------------------------------*/
3795 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003796 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3797 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 wdiEventData.pUserData = pUserData;
3800
3801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3802
3803}/*WDI_ExitUapsdReq*/
3804
3805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 MAC wants to set the UAPSD related configurations
3808 of an associated STA (while acting as an AP) to the WLAN
3809 Device. Upon the call of this API the WLAN DAL will pack
3810 and send a HAL Update UAPSD params request message to
3811 the lower RIVA sub-system if DAL is in state STARTED.
3812
3813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003815
3816 WDI_ConfigBSSReq must have been called.
3817
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 wdiUpdateUapsdParamsCb: callback for passing back the
3822 response of the update UAPSD params operation received
3823 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 callback
3827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 @see WDI_ConfigBSSReq
3829 @return Result of the function call
3830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003832WDI_UpdateUapsdParamsReq
3833(
3834 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3835 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3836 void* pUserData
3837)
3838{
3839 WDI_EventInfoType wdiEventData;
3840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3841
3842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 ------------------------------------------------------------------------*/
3845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3846 {
3847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3848 "WDI API call before module is initialized - Fail request");
3849
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 }
3852
3853 /*------------------------------------------------------------------------
3854 Fill in Event data and post to the Main FSM
3855 ------------------------------------------------------------------------*/
3856 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003858 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 wdiEventData.pUserData = pUserData;
3861
3862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3863
3864}/*WDI_UpdateUapsdParamsReq*/
3865
3866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 MAC wants to set the UAPSD related configurations before
3869 requesting for enter UAPSD power state to the WLAN
3870 Device. Upon the call of this API the WLAN DAL will pack
3871 and send a HAL Set UAPSD params request message to
3872 the lower RIVA sub-system if DAL is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
3877 WDI_PostAssocReq must have been called.
3878
3879 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3880 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiSetUapsdAcParamsCb: callback for passing back the
3883 response of the set UAPSD params operation received from
3884 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @see WDI_PostAssocReq
3890 @return Result of the function call
3891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003893WDI_SetUapsdAcParamsReq
3894(
3895 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3896 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3897 void* pUserData
3898)
3899{
3900 WDI_EventInfoType wdiEventData;
3901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3902
3903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 ------------------------------------------------------------------------*/
3906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3907 {
3908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3909 "WDI API call before module is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiUapsdInfo;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3920 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924
3925}/*WDI_SetUapsdAcParamsReq*/
3926
3927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 MAC wants to set/reset the RXP filters for received pkts
3930 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3931 and send a HAL configure RXP filter request message to
3932 the lower RIVA sub-system.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
Jeff Johnsone7245742012-09-05 17:12:55 -07003937
3938 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003939 filter as specified by the Device
3940 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiConfigureRxpFilterCb: callback for passing back the
3943 response of the configure RXP filter operation received
3944 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 callback
3948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 @return Result of the function call
3950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003952WDI_ConfigureRxpFilterReq
3953(
3954 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3955 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3956 void* pUserData
3957)
3958{
3959 WDI_EventInfoType wdiEventData;
3960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3961
3962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 ------------------------------------------------------------------------*/
3965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3966 {
3967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3968 "WDI API call before module is initialized - Fail request");
3969
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 }
3972
3973 /*------------------------------------------------------------------------
3974 Fill in Event data and post to the Main FSM
3975 ------------------------------------------------------------------------*/
3976 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3978 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3979 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 wdiEventData.pUserData = pUserData;
3981
3982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3983}/*WDI_ConfigureRxpFilterReq*/
3984
3985/**
3986 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3987 wants to set the beacon filters while in power save.
3988 Upon the call of this API the WLAN DAL will pack and
3989 send a Beacon filter request message to the
3990 lower RIVA sub-system.
3991
3992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003994
Jeff Johnsone7245742012-09-05 17:12:55 -07003995
3996 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 filter as specified by the Device
3998 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003999
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 wdiBeaconFilterCb: callback for passing back the
4001 response of the set beacon filter operation received
4002 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004003
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 callback
4006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 @return Result of the function call
4008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004010WDI_SetBeaconFilterReq
4011(
4012 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4013 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4014 void* pUserData
4015)
4016{
4017 WDI_EventInfoType wdiEventData;
4018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4019
4020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004022 ------------------------------------------------------------------------*/
4023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4024 {
4025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4026 "WDI API call before module is initialized - Fail request");
4027
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 }
4030
4031 /*------------------------------------------------------------------------
4032 Fill in Event data and post to the Main FSM
4033 ------------------------------------------------------------------------*/
4034 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004036 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 wdiEventData.pUserData = pUserData;
4039
4040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4041}/*WDI_SetBeaconFilterReq*/
4042
4043/**
4044 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4045 wants to remove the beacon filter for particular IE
4046 while in power save. Upon the call of this API the WLAN
4047 DAL will pack and send a remove Beacon filter request
4048 message to the lower RIVA sub-system.
4049
4050 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004052
Jeff Johnsone7245742012-09-05 17:12:55 -07004053
4054 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 filter as specified by the Device
4056 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004057
Jeff Johnson295189b2012-06-20 16:38:30 -07004058 wdiBeaconFilterCb: callback for passing back the
4059 response of the remove beacon filter operation received
4060 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004061
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 callback
4064
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 @return Result of the function call
4066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004068WDI_RemBeaconFilterReq
4069(
4070 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4071 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4072 void* pUserData
4073)
4074{
4075 WDI_EventInfoType wdiEventData;
4076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4077
4078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 ------------------------------------------------------------------------*/
4081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4082 {
4083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4084 "WDI API call before module is initialized - Fail request");
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 }
4088
4089 /*------------------------------------------------------------------------
4090 Fill in Event data and post to the Main FSM
4091 ------------------------------------------------------------------------*/
4092 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004094 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiEventData.pUserData = pUserData;
4097
4098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4099}/*WDI_RemBeaconFilterReq*/
4100
4101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 MAC wants to set the RSSI thresholds related
4104 configurations while in power save. Upon the call of
4105 this API the WLAN DAL will pack and send a HAL Set RSSI
4106 thresholds request message to the lower RIVA
4107 sub-system if DAL is in state STARTED.
4108
4109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004111
4112 WDI_PostAssocReq must have been called.
4113
4114 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4115 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004116
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 wdiSetUapsdAcParamsCb: callback for passing back the
4118 response of the set UAPSD params operation received from
4119 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 callback
4123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 @see WDI_PostAssocReq
4125 @return Result of the function call
4126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004128WDI_SetRSSIThresholdsReq
4129(
4130 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4131 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4132 void* pUserData
4133)
4134{
4135 WDI_EventInfoType wdiEventData;
4136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4137
4138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 ------------------------------------------------------------------------*/
4141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4142 {
4143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4144 "WDI API call before module is initialized - Fail request");
4145
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 }
4148
4149 /*------------------------------------------------------------------------
4150 Fill in Event data and post to the Main FSM
4151 ------------------------------------------------------------------------*/
4152 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004154 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 wdiEventData.pUserData = pUserData;
4157
4158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4159}/* WDI_SetRSSIThresholdsReq*/
4160
4161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 wants to set the filter to minimize unnecessary host
4164 wakeup due to broadcast traffic while in power save.
4165 Upon the call of this API the WLAN DAL will pack and
4166 send a HAL host offload request message to the
4167 lower RIVA sub-system if DAL is in state STARTED.
4168
4169 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004171
4172 WDI_PostAssocReq must have been called.
4173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wdiHostOffloadCb: callback for passing back the response
4178 of the host offload operation received from the
4179 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 callback
4183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 @see WDI_PostAssocReq
4185 @return Result of the function call
4186*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004187WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004188WDI_HostOffloadReq
4189(
4190 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4191 WDI_HostOffloadCb wdiHostOffloadCb,
4192 void* pUserData
4193)
4194{
4195 WDI_EventInfoType wdiEventData;
4196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4197
4198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 ------------------------------------------------------------------------*/
4201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4202 {
4203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4204 "WDI API call before module is initialized - Fail request");
4205
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 }
4208
4209 /*------------------------------------------------------------------------
4210 Fill in Event data and post to the Main FSM
4211 ------------------------------------------------------------------------*/
4212 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004214 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 wdiEventData.pUserData = pUserData;
4217
4218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4219}/*WDI_HostOffloadReq*/
4220
4221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 @brief WDI_KeepAliveReq will be called when the upper MAC
4223 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 and minimize unnecessary host wakeups due to while in power save.
4225 Upon the call of this API the WLAN DAL will pack and
4226 send a HAL Keep Alive request message to the
4227 lower RIVA sub-system if DAL is in state STARTED.
4228
4229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004231
4232 WDI_PostAssocReq must have been called.
4233
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004236
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiKeepAliveCb: callback for passing back the response
4238 of the Keep Alive operation received from the
4239 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 callback
4243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 @see WDI_PostAssocReq
4245 @return Result of the function call
4246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004248WDI_KeepAliveReq
4249(
4250 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4251 WDI_KeepAliveCb wdiKeepAliveCb,
4252 void* pUserData
4253)
4254{
4255 WDI_EventInfoType wdiEventData;
4256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4257
4258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 ------------------------------------------------------------------------*/
4261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4262 {
4263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4264 "WDI_KeepAliveReq: WDI API call before module "
4265 "is initialized - Fail request");
4266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 }
4269
4270 /*------------------------------------------------------------------------
4271 Fill in Event data and post to the Main FSM
4272 ------------------------------------------------------------------------*/
4273 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pEventData = pwdiKeepAliveParams;
4275 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4276 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 wdiEventData.pUserData = pUserData;
4278
4279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4280}/*WDI_KeepAliveReq*/
4281
4282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wants to set the Wowl Bcast ptrn to minimize unnecessary
4285 host wakeup due to broadcast traffic while in power
4286 save. Upon the call of this API the WLAN DAL will pack
4287 and send a HAL Wowl Bcast ptrn request message to the
4288 lower RIVA sub-system if DAL is in state STARTED.
4289
4290 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004292
4293 WDI_PostAssocReq must have been called.
4294
Jeff Johnsone7245742012-09-05 17:12:55 -07004295 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004297
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 wdiWowlAddBcPtrnCb: callback for passing back the
4299 response of the add Wowl bcast ptrn operation received
4300 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004301
Jeff Johnson295189b2012-06-20 16:38:30 -07004302 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 callback
4304
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 @see WDI_PostAssocReq
4306 @return Result of the function call
4307*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004308WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004309WDI_WowlAddBcPtrnReq
4310(
4311 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4312 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4313 void* pUserData
4314)
4315{
4316 WDI_EventInfoType wdiEventData;
4317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4318
4319 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004321 ------------------------------------------------------------------------*/
4322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4323 {
4324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4325 "WDI API call before module is initialized - Fail request");
4326
Jeff Johnsone7245742012-09-05 17:12:55 -07004327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004328 }
4329
4330 /*------------------------------------------------------------------------
4331 Fill in Event data and post to the Main FSM
4332 ------------------------------------------------------------------------*/
4333 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004335 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004337 wdiEventData.pUserData = pUserData;
4338
4339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4340}/*WDI_WowlAddBcPtrnReq*/
4341
4342/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004343 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004344 wants to clear the Wowl Bcast ptrn. Upon the call of
4345 this API the WLAN DAL will pack and send a HAL delete
4346 Wowl Bcast ptrn request message to the lower RIVA
4347 sub-system if DAL is in state STARTED.
4348
4349 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004351
4352 WDI_WowlAddBcPtrnReq must have been called.
4353
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004356
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 wdiWowlDelBcPtrnCb: callback for passing back the
4358 response of the del Wowl bcast ptrn operation received
4359 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004360
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 callback
4363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 @see WDI_WowlAddBcPtrnReq
4365 @return Result of the function call
4366*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004368WDI_WowlDelBcPtrnReq
4369(
4370 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4371 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4372 void* pUserData
4373)
4374{
4375 WDI_EventInfoType wdiEventData;
4376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4377
4378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 ------------------------------------------------------------------------*/
4381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4382 {
4383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4384 "WDI API call before module is initialized - Fail request");
4385
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 }
4388
4389 /*------------------------------------------------------------------------
4390 Fill in Event data and post to the Main FSM
4391 ------------------------------------------------------------------------*/
4392 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004394 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 wdiEventData.pUserData = pUserData;
4397
4398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4399}/*WDI_WowlDelBcPtrnReq*/
4400
4401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 wants to enter the Wowl state to minimize unnecessary
4404 host wakeup while in power save. Upon the call of this
4405 API the WLAN DAL will pack and send a HAL Wowl enter
4406 request message to the lower RIVA sub-system if DAL is
4407 in state STARTED.
4408
4409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004411
4412 WDI_PostAssocReq must have been called.
4413
Jeff Johnsone7245742012-09-05 17:12:55 -07004414 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004416
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 wdiWowlEnterReqCb: callback for passing back the
4418 response of the enter Wowl operation received from the
4419 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004420
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004422 callback
4423
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 @see WDI_PostAssocReq
4425 @return Result of the function call
4426*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004427WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004428WDI_WowlEnterReq
4429(
4430 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4431 WDI_WowlEnterReqCb wdiWowlEnterCb,
4432 void* pUserData
4433)
4434{
4435 WDI_EventInfoType wdiEventData;
4436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4437
4438 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004440 ------------------------------------------------------------------------*/
4441 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4442 {
4443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4444 "WDI API call before module is initialized - Fail request");
4445
Jeff Johnsone7245742012-09-05 17:12:55 -07004446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004447 }
4448
4449 /*------------------------------------------------------------------------
4450 Fill in Event data and post to the Main FSM
4451 ------------------------------------------------------------------------*/
4452 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004454 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004455 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004456 wdiEventData.pUserData = pUserData;
4457
4458 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4459}/*WDI_WowlEnterReq*/
4460
4461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004462 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 wants to exit the Wowl state. Upon the call of this API
4464 the WLAN DAL will pack and send a HAL Wowl exit request
4465 message to the lower RIVA sub-system if DAL is in state
4466 STARTED.
4467
4468 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004470
4471 WDI_WowlEnterReq must have been called.
4472
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004475
Jeff Johnson295189b2012-06-20 16:38:30 -07004476 wdiWowlExitReqCb: callback for passing back the response
4477 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004478
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 callback
4481
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 @see WDI_WowlEnterReq
4483 @return Result of the function call
4484*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004486WDI_WowlExitReq
4487(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004488 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004489 WDI_WowlExitReqCb wdiWowlExitCb,
4490 void* pUserData
4491)
4492{
4493 WDI_EventInfoType wdiEventData;
4494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4495
4496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 ------------------------------------------------------------------------*/
4499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4500 {
4501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4502 "WDI API call before module is initialized - Fail request");
4503
Jeff Johnsone7245742012-09-05 17:12:55 -07004504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 }
4506
4507 /*------------------------------------------------------------------------
4508 Fill in Event data and post to the Main FSM
4509 ------------------------------------------------------------------------*/
4510 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004511 wdiEventData.pEventData = pwdiWowlExitParams;
4512 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004514 wdiEventData.pUserData = pUserData;
4515
4516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4517}/*WDI_WowlExitReq*/
4518
4519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 the upper MAC wants to dynamically adjusts the listen
4522 interval based on the WLAN/MSM activity. Upon the call
4523 of this API the WLAN DAL will pack and send a HAL
4524 configure Apps Cpu Wakeup State request message to the
4525 lower RIVA sub-system.
4526
4527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004529
Jeff Johnsone7245742012-09-05 17:12:55 -07004530
4531 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004532 Apps Cpu Wakeup State as specified by the
4533 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004534
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4536 back the response of the configure Apps Cpu Wakeup State
4537 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004538
Jeff Johnson295189b2012-06-20 16:38:30 -07004539 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 callback
4541
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 @return Result of the function call
4543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004545WDI_ConfigureAppsCpuWakeupStateReq
4546(
4547 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4548 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4549 void* pUserData
4550)
4551{
4552 WDI_EventInfoType wdiEventData;
4553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4554
4555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004557 ------------------------------------------------------------------------*/
4558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4559 {
4560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4561 "WDI API call before module is initialized - Fail request");
4562
Jeff Johnsone7245742012-09-05 17:12:55 -07004563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 }
4565
4566 /*------------------------------------------------------------------------
4567 Fill in Event data and post to the Main FSM
4568 ------------------------------------------------------------------------*/
4569 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4571 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4572 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004573 wdiEventData.pUserData = pUserData;
4574
4575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4576}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4577/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 to to perform a flush operation on a given AC. Upon the
4580 call of this API the WLAN DAL will pack and send a HAL
4581 Flush AC request message to the lower RIVA sub-system if
4582 DAL is in state STARTED.
4583
4584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004586
4587 WDI_AddBAReq must have been called.
4588
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004591
Jeff Johnson295189b2012-06-20 16:38:30 -07004592 wdiFlushAcRspCb: callback for passing back the response
4593 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004594
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 callback
4597
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 @see WDI_AddBAReq
4599 @return Result of the function call
4600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004602WDI_FlushAcReq
4603(
4604 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4605 WDI_FlushAcRspCb wdiFlushAcRspCb,
4606 void* pUserData
4607)
4608{
4609 WDI_EventInfoType wdiEventData;
4610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4611
4612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 ------------------------------------------------------------------------*/
4615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4616 {
4617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4618 "WDI API call before module is initialized - Fail request");
4619
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 }
4622
4623 /*------------------------------------------------------------------------
4624 Fill in Event data and post to the Main FSM
4625 ------------------------------------------------------------------------*/
4626 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 wdiEventData.pEventData = pwdiFlushAcReqParams;
4628 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4629 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004630 wdiEventData.pUserData = pUserData;
4631
4632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4633
4634}/*WDI_FlushAcReq*/
4635
4636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wants to notify the lower mac on a BT AMP event. This is
4639 to inform BTC-SLM that some BT AMP event occurred. Upon
4640 the call of this API the WLAN DAL will pack and send a
4641 HAL BT AMP event request message to the lower RIVA
4642 sub-system if DAL is in state STARTED.
4643
4644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004646
Jeff Johnsone7245742012-09-05 17:12:55 -07004647
4648 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004650
Jeff Johnson295189b2012-06-20 16:38:30 -07004651 wdiBtAmpEventRspCb: callback for passing back the
4652 response of the BT AMP event operation received from the
4653 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004654
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 callback
4657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 @return Result of the function call
4659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004661WDI_BtAmpEventReq
4662(
4663 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4664 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4665 void* pUserData
4666)
4667{
4668 WDI_EventInfoType wdiEventData;
4669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4670
4671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 ------------------------------------------------------------------------*/
4674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4675 {
4676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4677 "WDI API call before module is initialized - Fail request");
4678
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 }
4681
4682 /*------------------------------------------------------------------------
4683 Fill in Event data and post to the Main FSM
4684 ------------------------------------------------------------------------*/
4685 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4687 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4688 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 wdiEventData.pUserData = pUserData;
4690
4691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4692
4693}/*WDI_BtAmpEventReq*/
4694
Jeff Johnsone7245742012-09-05 17:12:55 -07004695#ifdef FEATURE_OEM_DATA_SUPPORT
4696/**
4697 @brief WDI_Start Oem Data Req will be called when the upper MAC
4698 wants to notify the lower mac on a oem data Req event.Upon
4699 the call of this API the WLAN DAL will pack and send a
4700 HAL OEM Data Req event request message to the lower RIVA
4701 sub-system if DAL is in state STARTED.
4702
4703 In state BUSY this request will be queued. Request won't
4704 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004705
4706
Jeff Johnsone7245742012-09-05 17:12:55 -07004707
4708 @param pwdiOemDataReqParams: the Oem Data Req as
4709 specified by the Device Interface
4710
4711 wdiStartOemDataRspCb: callback for passing back the
4712 response of the Oem Data Req received from the
4713 device
4714
4715 pUserData: user data will be passed back with the
4716 callback
4717
4718 @return Result of the function call
4719*/
4720WDI_Status
4721WDI_StartOemDataReq
4722(
4723 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4724 WDI_oemDataRspCb wdiOemDataRspCb,
4725 void* pUserData
4726)
4727{
4728 WDI_EventInfoType wdiEventData;
4729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4730
4731 /*------------------------------------------------------------------------
4732 Sanity Check
4733 ------------------------------------------------------------------------*/
4734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4735 {
4736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4737 "WDI API call before module is initialized - Fail request");
4738
4739 return WDI_STATUS_E_NOT_ALLOWED;
4740 }
4741
4742 /*------------------------------------------------------------------------
4743 Fill in Event data and post to the Main FSM
4744 ------------------------------------------------------------------------*/
4745 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4746 wdiEventData.pEventData = pwdiOemDataReqParams;
4747 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4748 wdiEventData.pCBfnc = wdiOemDataRspCb;
4749 wdiEventData.pUserData = pUserData;
4750
4751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4752
4753
4754}
4755
4756#endif
4757
4758
4759/*========================================================================
4760
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004762
Jeff Johnson295189b2012-06-20 16:38:30 -07004763==========================================================================*/
4764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004765 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 the WLAN HW to change the current channel of operation.
4767 Upon the call of this API the WLAN DAL will pack and
4768 send a HAL Start request message to the lower RIVA
4769 sub-system if DAL is in state STARTED.
4770
4771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004773
4774 WDI_Start must have been called.
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004778
Jeff Johnson295189b2012-06-20 16:38:30 -07004779 wdiSwitchChRspCb: callback for passing back the response
4780 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004781
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 callback
4784
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 @see WDI_Start
4786 @return Result of the function call
4787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004789WDI_SwitchChReq
4790(
4791 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4792 WDI_SwitchChRspCb wdiSwitchChRspCb,
4793 void* pUserData
4794)
4795{
4796 WDI_EventInfoType wdiEventData;
4797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4798
4799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 ------------------------------------------------------------------------*/
4802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4803 {
4804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4805 "WDI API call before module is initialized - Fail request");
4806
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 }
4809
4810 /*------------------------------------------------------------------------
4811 Fill in Event data and post to the Main FSM
4812 ------------------------------------------------------------------------*/
4813 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 wdiEventData.pEventData = pwdiSwitchChReqParams;
4815 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4816 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wdiEventData.pUserData = pUserData;
4818
4819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4820
4821}/*WDI_SwitchChReq*/
4822
4823
4824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 wishes to add or update a STA in HW. Upon the call of
4827 this API the WLAN DAL will pack and send a HAL Start
4828 message request message to the lower RIVA sub-system if
4829 DAL is in state STARTED.
4830
4831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004833
4834 WDI_Start must have been called.
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004838
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 wdiConfigSTARspCb: callback for passing back the
4840 response of the config STA operation received from the
4841 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004842
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 callback
4845
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 @see WDI_Start
4847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_ConfigSTAReq
4851(
4852 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4853 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4877 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881
4882}/*WDI_ConfigSTAReq*/
4883
4884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004885 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 wants to change the state of an ongoing link. Upon the
4887 call of this API the WLAN DAL will pack and send a HAL
4888 Start message request message to the lower RIVA
4889 sub-system if DAL is in state STARTED.
4890
4891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004893
4894 WDI_JoinStartReq must have been called.
4895
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004898
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 wdiSetLinkStateRspCb: callback for passing back the
4900 response of the set link state operation received from
4901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004902
Jeff Johnson295189b2012-06-20 16:38:30 -07004903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 callback
4905
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 @see WDI_JoinStartReq
4907 @return Result of the function call
4908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004910WDI_SetLinkStateReq
4911(
4912 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4913 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4914 void* pUserData
4915)
4916{
4917 WDI_EventInfoType wdiEventData;
4918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4919
4920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 ------------------------------------------------------------------------*/
4923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4924 {
4925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4926 "WDI API call before module is initialized - Fail request");
4927
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 }
4930
4931 /*------------------------------------------------------------------------
4932 Fill in Event data and post to the Main FSM
4933 ------------------------------------------------------------------------*/
4934 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4936 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4937 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 wdiEventData.pUserData = pUserData;
4939
4940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4941
4942}/*WDI_SetLinkStateReq*/
4943
4944
4945/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 to get statistics (MIB counters) from the device. Upon
4948 the call of this API the WLAN DAL will pack and send a
4949 HAL Start request message to the lower RIVA sub-system
4950 if DAL is in state STARTED.
4951
4952 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004953 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004954
4955 WDI_Start must have been called.
4956
Jeff Johnsone7245742012-09-05 17:12:55 -07004957 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004958 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004959
Jeff Johnson295189b2012-06-20 16:38:30 -07004960 wdiGetStatsRspCb: callback for passing back the response
4961 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004962
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 callback
4965
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 @see WDI_Start
4967 @return Result of the function call
4968*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004969WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004970WDI_GetStatsReq
4971(
4972 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4973 WDI_GetStatsRspCb wdiGetStatsRspCb,
4974 void* pUserData
4975)
4976{
4977 WDI_EventInfoType wdiEventData;
4978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4979
4980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 ------------------------------------------------------------------------*/
4983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4984 {
4985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4986 "WDI API call before module is initialized - Fail request");
4987
Jeff Johnsone7245742012-09-05 17:12:55 -07004988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 }
4990
4991 /*------------------------------------------------------------------------
4992 Fill in Event data and post to the Main FSM
4993 ------------------------------------------------------------------------*/
4994 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004995 wdiEventData.pEventData = pwdiGetStatsReqParams;
4996 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4997 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 wdiEventData.pUserData = pUserData;
4999
5000 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5001
5002}/*WDI_GetStatsReq*/
5003
Srinivas Girigowda2471d832013-01-25 13:33:11 -08005004#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5005/**
5006 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5007 to get roam rssi from the device. Upon
5008 the call of this API the WLAN DAL will pack and send a
5009 HAL Start request message to the lower RIVA sub-system
5010 if DAL is in state STARTED.
5011
5012 In state BUSY this request will be queued. Request won't
5013 be allowed in any other state.
5014
5015 WDI_Start must have been called.
5016
5017 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5018 specified by the Device Interface
5019
5020 wdiGetRoamRssiRspCb: callback for passing back the response
5021 of the get stats operation received from the device
5022
5023 pUserData: user data will be passed back with the
5024 callback
5025
5026 @see WDI_Start
5027 @return Result of the function call
5028*/
5029WDI_Status
5030WDI_GetRoamRssiReq
5031(
5032 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5033 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5034 void* pUserData
5035)
5036{
5037 WDI_EventInfoType wdiEventData;
5038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5039
5040 /*------------------------------------------------------------------------
5041 Sanity Check
5042 ------------------------------------------------------------------------*/
5043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5044 {
5045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5046 "WDI API call before module is initialized - Fail request");
5047
5048 return WDI_STATUS_E_NOT_ALLOWED;
5049 }
5050 /*------------------------------------------------------------------------
5051 Fill in Event data and post to the Main FSM
5052 ------------------------------------------------------------------------*/
5053 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5054 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5055 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5056 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5057 wdiEventData.pUserData = pUserData;
5058
5059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5060
5061}/*WDI_GetRoamRssiReq*/
5062#endif
5063
Jeff Johnson295189b2012-06-20 16:38:30 -07005064
5065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 it wishes to change the configuration of the WLAN
5068 Device. Upon the call of this API the WLAN DAL will pack
5069 and send a HAL Update CFG request message to the lower
5070 RIVA sub-system if DAL is in state STARTED.
5071
5072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005074
5075 WDI_Start must have been called.
5076
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005079
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 wdiUpdateCfgsRspCb: callback for passing back the
5081 response of the update cfg operation received from the
5082 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 callback
5086
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 @see WDI_Start
5088 @return Result of the function call
5089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005091WDI_UpdateCfgReq
5092(
5093 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5094 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5095 void* pUserData
5096)
5097{
5098 WDI_EventInfoType wdiEventData;
5099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5100
5101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 ------------------------------------------------------------------------*/
5104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5105 {
5106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5107 "WDI API call before module is initialized - Fail request");
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 }
5111
5112 /*------------------------------------------------------------------------
5113 Fill in Event data and post to the Main FSM
5114 ------------------------------------------------------------------------*/
5115 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5117 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5118 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 wdiEventData.pUserData = pUserData;
5120
5121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5122
5123}/*WDI_UpdateCfgReq*/
5124
5125
5126
5127/**
5128 @brief WDI_AddBAReq will be called when the upper MAC has setup
5129 successfully a BA session and needs to notify the HW for
5130 the appropriate settings to take place. Upon the call of
5131 this API the WLAN DAL will pack and send a HAL Add BA
5132 request message to the lower RIVA sub-system if DAL is
5133 in state STARTED.
5134
5135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005137
5138 WDI_PostAssocReq must have been called.
5139
5140 @param wdiAddBAReqParams: the add BA parameters as specified by
5141 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005142
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 wdiAddBARspCb: callback for passing back the response of
5144 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005145
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 callback
5148
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 @see WDI_PostAssocReq
5150 @return Result of the function call
5151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005153WDI_AddBAReq
5154(
5155 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5156 WDI_AddBARspCb wdiAddBARspCb,
5157 void* pUserData
5158)
5159{
5160 WDI_EventInfoType wdiEventData;
5161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5162
5163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 ------------------------------------------------------------------------*/
5166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5167 {
5168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5169 "WDI API call before module is initialized - Fail request");
5170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 }
5173
5174 /*------------------------------------------------------------------------
5175 Fill in Event data and post to the Main FSM
5176 ------------------------------------------------------------------------*/
5177 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 wdiEventData.pEventData = pwdiAddBAReqParams;
5179 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5180 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 wdiEventData.pUserData = pUserData;
5182
5183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5184
5185}/*WDI_AddBAReq*/
5186
5187
5188/**
5189 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5190 successfully a BA session and needs to notify the HW for
5191 the appropriate settings to take place. Upon the call of
5192 this API the WLAN DAL will pack and send a HAL Add BA
5193 request message to the lower RIVA sub-system if DAL is
5194 in state STARTED.
5195
5196 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005198
5199 WDI_PostAssocReq must have been called.
5200
5201 @param wdiAddBAReqParams: the add BA parameters as specified by
5202 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005203
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 wdiAddBARspCb: callback for passing back the response of
5205 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005206
Jeff Johnson295189b2012-06-20 16:38:30 -07005207 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 callback
5209
Jeff Johnson295189b2012-06-20 16:38:30 -07005210 @see WDI_PostAssocReq
5211 @return Result of the function call
5212*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005213WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005214WDI_TriggerBAReq
5215(
5216 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5217 WDI_TriggerBARspCb wdiTriggerBARspCb,
5218 void* pUserData
5219)
5220{
5221 WDI_EventInfoType wdiEventData;
5222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5223
5224 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 ------------------------------------------------------------------------*/
5227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5228 {
5229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5230 "WDI API call before module is initialized - Fail request");
5231
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 }
5234
5235 /*------------------------------------------------------------------------
5236 Fill in Event data and post to the Main FSM
5237 ------------------------------------------------------------------------*/
5238 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5240 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5241 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 wdiEventData.pUserData = pUserData;
5243
5244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5245
5246}/*WDI_AddBAReq*/
5247
5248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 wishes to update any of the Beacon parameters used by HW.
5251 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5252 message to the lower RIVA sub-system if DAL is in state
5253 STARTED.
5254
5255 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005257
5258 WDI_PostAssocReq must have been called.
5259
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 wdiUpdateBeaconParamsRspCb: callback for passing back the
5264 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005265
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 callback
5268
Jeff Johnson295189b2012-06-20 16:38:30 -07005269 @see WDI_PostAssocReq
5270 @return Result of the function call
5271*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005273WDI_UpdateBeaconParamsReq
5274(
5275 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5276 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5277 void* pUserData
5278)
5279{
5280 WDI_EventInfoType wdiEventData;
5281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5282
5283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005284 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 ------------------------------------------------------------------------*/
5286 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5287 {
5288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5289 "WDI API call before module is initialized - Fail request");
5290
Jeff Johnsone7245742012-09-05 17:12:55 -07005291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 }
5293
5294 /*------------------------------------------------------------------------
5295 Fill in Event data and post to the Main FSM
5296 ------------------------------------------------------------------------*/
5297 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5299 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5300 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 wdiEventData.pUserData = pUserData;
5302
5303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5304
5305}/*WDI_UpdateBeaconParamsReq*/
5306
5307/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005308 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 wishes to update the Beacon template used by HW.
5310 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5311 message to the lower RIVA sub-system if DAL is in state
5312 STARTED.
5313
5314 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005315 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005316
5317 WDI_PostAssocReq must have been called.
5318
Jeff Johnsone7245742012-09-05 17:12:55 -07005319 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005321
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 wdiSendBeaconParamsRspCb: callback for passing back the
5323 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005324
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005326 callback
5327
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 @see WDI_PostAssocReq
5329 @return Result of the function call
5330*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005332WDI_SendBeaconParamsReq
5333(
5334 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5335 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5336 void* pUserData
5337)
5338{
5339 WDI_EventInfoType wdiEventData;
5340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5341
5342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 ------------------------------------------------------------------------*/
5345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5346 {
5347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5348 "WDI API call before module is initialized - Fail request");
5349
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005351 }
5352
5353 /*------------------------------------------------------------------------
5354 Fill in Event data and post to the Main FSM
5355 ------------------------------------------------------------------------*/
5356 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 wdiEventData.pEventData = pwdiSendBeaconParams;
5358 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5359 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 wdiEventData.pUserData = pUserData;
5361
5362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5363
5364}/*WDI_SendBeaconParamsReq*/
5365
5366/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 upper MAC wants to update the probe response template to
5369 be transmitted as Soft AP
5370 Upon the call of this API the WLAN DAL will
5371 pack and send the probe rsp template message to the
5372 lower RIVA sub-system if DAL is in state STARTED.
5373
5374 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005376
5377
Jeff Johnsone7245742012-09-05 17:12:55 -07005378 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 wdiSendBeaconParamsRspCb: callback for passing back the
5382 response of the Send Beacon Params operation received
5383 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005384
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005386 callback
5387
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 @see WDI_AddBAReq
5389 @return Result of the function call
5390*/
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005393WDI_UpdateProbeRspTemplateReq
5394(
5395 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5396 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5397 void* pUserData
5398)
5399{
5400 WDI_EventInfoType wdiEventData;
5401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5402
5403 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005404 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 ------------------------------------------------------------------------*/
5406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5407 {
5408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5409 "WDI API call before module is initialized - Fail request");
5410
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 }
5413
5414 /*------------------------------------------------------------------------
5415 Fill in Event data and post to the Main FSM
5416 ------------------------------------------------------------------------*/
5417 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5419 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5420 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 wdiEventData.pUserData = pUserData;
5422
5423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5424
5425}/*WDI_UpdateProbeRspTemplateReq*/
5426
5427/**
5428 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5429 to the NV memory.
5430
5431
5432 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5433 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 wdiNvDownloadRspCb: callback for passing back the response of
5436 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005437
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005439 callback
5440
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 @see WDI_PostAssocReq
5442 @return Result of the function call
5443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005445WDI_NvDownloadReq
5446(
5447 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5448 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5449 void* pUserData
5450)
5451{
5452 WDI_EventInfoType wdiEventData;
5453
5454 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 ------------------------------------------------------------------------*/
5457 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5458 {
5459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5460 "WDI API call before module is initialized - Fail request");
5461
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005463 }
5464
5465 /*------------------------------------------------------------------------
5466 Fill in Event data and post to the Main FSM
5467 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5469 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5470 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5471 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 wdiEventData.pUserData = pUserData;
5473
5474 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5475
5476}/*WDI_NVDownloadReq*/
5477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 upper MAC wants to send Notice of Absence
5481 Upon the call of this API the WLAN DAL will
5482 pack and send the probe rsp template message to the
5483 lower RIVA sub-system if DAL is in state STARTED.
5484
5485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005487
5488
Jeff Johnsone7245742012-09-05 17:12:55 -07005489 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005491
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 wdiSendBeaconParamsRspCb: callback for passing back the
5493 response of the Send Beacon Params operation received
5494 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005495
Jeff Johnson295189b2012-06-20 16:38:30 -07005496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 callback
5498
Jeff Johnson295189b2012-06-20 16:38:30 -07005499 @see WDI_AddBAReq
5500 @return Result of the function call
5501*/
5502WDI_Status
5503WDI_SetP2PGONOAReq
5504(
5505 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5506 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5507 void* pUserData
5508)
5509{
5510 WDI_EventInfoType wdiEventData;
5511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5512
5513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005515 ------------------------------------------------------------------------*/
5516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5517 {
5518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5519 "WDI API call before module is initialized - Fail request");
5520
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 }
5523
5524 /*------------------------------------------------------------------------
5525 Fill in Event data and post to the Main FSM
5526 ------------------------------------------------------------------------*/
5527 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5529 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5530 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005531 wdiEventData.pUserData = pUserData;
5532
5533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5534
5535}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005536
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305537#ifdef FEATURE_WLAN_TDLS
5538/**
5539 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5540 upper MAC wants to send TDLS Link Establish Request Parameters
5541 Upon the call of this API the WLAN DAL will
5542 pack and send the TDLS Link Establish Request message to the
5543 lower RIVA sub-system if DAL is in state STARTED.
5544
5545 In state BUSY this request will be queued. Request won't
5546 be allowed in any other state.
5547
5548
5549 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5550 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5551
5552 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5553 response of the TDLS Link Establish request received
5554 from the device
5555
5556 pUserData: user data will be passed back with the
5557 callback
5558
5559 @see
5560 @return Result of the function call
5561*/
5562WDI_Status
5563WDI_SetTDLSLinkEstablishReq
5564(
5565 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5566 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5567 void* pUserData
5568)
5569{
5570 WDI_EventInfoType wdiEventData;
5571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5572
5573 /*------------------------------------------------------------------------
5574 Sanity Check
5575 ------------------------------------------------------------------------*/
5576 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5577 {
5578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5579 "WDI API call before module is initialized - Fail request");
5580
5581 return WDI_STATUS_E_NOT_ALLOWED;
5582 }
5583
5584 /*------------------------------------------------------------------------
5585 Fill in Event data and post to the Main FSM
5586 ------------------------------------------------------------------------*/
5587 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5588 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5589 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5590 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5591 wdiEventData.pUserData = pUserData;
5592
5593 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5594
5595}/*WDI_SetTDLSLinkEstablishReq*/
5596#endif
5597
Jeff Johnson295189b2012-06-20 16:38:30 -07005598/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 UMAC wanted to add STA self while opening any new session
5601 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005603
5604
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 callback
5610
5611 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 @return Result of the function call
5613*/
5614WDI_Status
5615WDI_AddSTASelfReq
5616(
5617 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5618 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5619 void* pUserData
5620)
5621{
5622 WDI_EventInfoType wdiEventData;
5623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5624
5625 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005627 ------------------------------------------------------------------------*/
5628 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5629 {
5630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5631 "WDI API call before module is initialized - Fail request");
5632
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 }
5635
5636 /*------------------------------------------------------------------------
5637 Fill in Event data and post to the Main FSM
5638 ------------------------------------------------------------------------*/
5639 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5641 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5642 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005643 wdiEventData.pUserData = pUserData;
5644
5645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5646
5647}/*WDI_AddSTASelfReq*/
5648
5649
Jeff Johnsone7245742012-09-05 17:12:55 -07005650#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005651/**
5652 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5653 the device of a successful add TSpec negotiation. HW
5654 needs to receive the TSpec Info from the UMAC in order
5655 to configure properly the QoS data traffic. Upon the
5656 call of this API the WLAN DAL will pack and send a HAL
5657 Add TS request message to the lower RIVA sub-system if
5658 DAL is in state STARTED.
5659
5660 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005662
5663 WDI_PostAssocReq must have been called.
5664
5665 @param wdiAddTsReqParams: the add TS parameters as specified by
5666 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005667
Jeff Johnson295189b2012-06-20 16:38:30 -07005668 wdiAddTsRspCb: callback for passing back the response of
5669 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005670
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 callback
5673
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 @see WDI_PostAssocReq
5675 @return Result of the function call
5676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005678WDI_AggrAddTSReq
5679(
5680 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5681 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5682 void* pUserData
5683)
5684{
5685 WDI_EventInfoType wdiEventData;
5686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5687
5688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005690 ------------------------------------------------------------------------*/
5691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5692 {
5693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5694 "WDI API call before module is initialized - Fail request");
5695
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 }
5698
5699 /*------------------------------------------------------------------------
5700 Fill in Event data and post to the Main FSM
5701 ------------------------------------------------------------------------*/
5702 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5704 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5705 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 wdiEventData.pUserData = pUserData;
5707
5708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5709
5710}/*WDI_AggrAddTSReq*/
5711
5712#endif /* WLAN_FEATURE_VOWIFI_11R */
5713
Jeff Johnson295189b2012-06-20 16:38:30 -07005714/**
5715 @brief WDI_FTMCommandReq
5716 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
5718 @param ftmCommandReq: FTM Command Body
5719 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005721
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 @see
5723 @return Result of the function call
5724*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005725WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005726WDI_FTMCommandReq
5727(
5728 WDI_FTMCommandReqType *ftmCommandReq,
5729 WDI_FTMCommandRspCb ftmCommandRspCb,
5730 void *pUserData
5731)
5732{
5733 WDI_EventInfoType wdiEventData;
5734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5735
5736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005737 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005738 ------------------------------------------------------------------------*/
5739 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5740 {
5741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5742 "WDI API call before module is initialized - Fail request");
5743
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 }
5746
5747 /*------------------------------------------------------------------------
5748 Fill in Event data and post to the Main FSM
5749 ------------------------------------------------------------------------*/
5750 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5751 wdiEventData.pEventData = (void *)ftmCommandReq;
5752 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5753 wdiEventData.pCBfnc = ftmCommandRspCb;
5754 wdiEventData.pUserData = pUserData;
5755
5756 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5757}
Jeff Johnson295189b2012-06-20 16:38:30 -07005758/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005759 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005760
5761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005763
5764
5765 @param pwdiResumeReqParams: as specified by
5766 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005767
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 wdiResumeReqRspCb: callback for passing back the response of
5769 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005770
Jeff Johnson295189b2012-06-20 16:38:30 -07005771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 callback
5773
5774 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 @return Result of the function call
5776*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005778WDI_HostResumeReq
5779(
5780 WDI_ResumeParamsType* pwdiResumeReqParams,
5781 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5782 void* pUserData
5783)
5784{
5785 WDI_EventInfoType wdiEventData;
5786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5787
5788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 ------------------------------------------------------------------------*/
5791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5792 {
5793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5794 "WDI API call before module is initialized - Fail request");
5795
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 }
5798
5799 /*------------------------------------------------------------------------
5800 Fill in Event data and post to the Main FSM
5801 ------------------------------------------------------------------------*/
5802 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 wdiEventData.pEventData = pwdiResumeReqParams;
5804 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5805 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 wdiEventData.pUserData = pUserData;
5807
5808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5809
5810}/*WDI_HostResumeReq*/
5811
5812/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005814
5815 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005817
5818
5819 @param pwdiDelStaSelfReqParams: as specified by
5820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005821
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 wdiDelStaSelfRspCb: callback for passing back the response of
5823 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005824
Jeff Johnson295189b2012-06-20 16:38:30 -07005825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 callback
5827
Jeff Johnson295189b2012-06-20 16:38:30 -07005828 @see WDI_PostAssocReq
5829 @return Result of the function call
5830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005832WDI_DelSTASelfReq
5833(
5834 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5835 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5836 void* pUserData
5837)
5838{
5839 WDI_EventInfoType wdiEventData;
5840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5841
5842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 ------------------------------------------------------------------------*/
5845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5846 {
5847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5848 "WDI API call before module is initialized - Fail request");
5849
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 }
5852
5853 /*------------------------------------------------------------------------
5854 Fill in Event data and post to the Main FSM
5855 ------------------------------------------------------------------------*/
5856 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005857 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5858 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5859 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 wdiEventData.pUserData = pUserData;
5861
5862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5863
5864}/*WDI_AggrAddTSReq*/
5865
5866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5868 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005869 Upon the call of this API the WLAN DAL will pack
5870 and send a HAL Set Tx Per Tracking request message to the
5871 lower RIVA sub-system if DAL is in state STARTED.
5872
5873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005875
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005878
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 pwdiSetTxPerTrackingRspCb: callback for passing back the
5880 response of the set Tx PER Tracking configurations operation received
5881 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005882
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005884 callback
5885
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 @return Result of the function call
5887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005889WDI_SetTxPerTrackingReq
5890(
5891 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5892 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5893 void* pUserData
5894)
5895{
5896 WDI_EventInfoType wdiEventData;
5897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5898
5899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 ------------------------------------------------------------------------*/
5902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5903 {
5904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5905 "WDI API call before module is initialized - Fail request");
5906
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 }
5909
5910 /*------------------------------------------------------------------------
5911 Fill in Event data and post to the Main FSM
5912 ------------------------------------------------------------------------*/
5913 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 wdiEventData.pUserData = pUserData;
5918
5919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5920
5921}/*WDI_SetTxPerTrackingReq*/
5922
5923/**
5924 @brief WDI_SetTmLevelReq
5925 If HW Thermal condition changed, driver should react based on new
5926 HW thermal condition.
5927
5928 @param pwdiSetTmLevelReq: New thermal condition information
5929
5930 pwdiSetTmLevelRspCb: callback
5931
5932 usrData: user data will be passed back with the
5933 callback
5934
5935 @return Result of the function call
5936*/
5937WDI_Status
5938WDI_SetTmLevelReq
5939(
5940 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5941 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5942 void *usrData
5943)
5944{
5945 WDI_EventInfoType wdiEventData;
5946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5947
5948 /*------------------------------------------------------------------------
5949 Sanity Check
5950 ------------------------------------------------------------------------*/
5951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5952 {
5953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5954 "WDI API call before module is initialized - Fail request");
5955
5956 return WDI_STATUS_E_NOT_ALLOWED;
5957 }
5958
5959 /*------------------------------------------------------------------------
5960 Fill in Event data and post to the Main FSM
5961 ------------------------------------------------------------------------*/
5962 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5963 wdiEventData.pEventData = pwdiSetTmLevelReq;
5964 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5965 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5966 wdiEventData.pUserData = usrData;
5967
5968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5969}
5970
5971/**
5972 @brief WDI_HostSuspendInd
5973
5974 Suspend Indication from the upper layer will be sent
5975 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005976
Jeff Johnson295189b2012-06-20 16:38:30 -07005977 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005978
5979 @see
5980
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 @return Status of the request
5982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005984WDI_HostSuspendInd
5985(
5986 WDI_SuspendParamsType* pwdiSuspendIndParams
5987)
5988{
5989
5990 WDI_EventInfoType wdiEventData;
5991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5992
5993 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005995 ------------------------------------------------------------------------*/
5996 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5997 {
5998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5999 "WDI API call before module is initialized - Fail request");
6000
Jeff Johnsone7245742012-09-05 17:12:55 -07006001 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 }
6003
6004 /*------------------------------------------------------------------------
6005 Fill in Event data and post to the Main FSM
6006 ------------------------------------------------------------------------*/
6007 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006008 wdiEventData.pEventData = pwdiSuspendIndParams;
6009 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6010 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006011 wdiEventData.pUserData = NULL;
6012
6013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6014
6015}/*WDI_HostSuspendInd*/
6016
6017/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006018 @brief WDI_TrafficStatsInd
6019 Traffic Stats from the upper layer will be sent
6020 down to HAL
6021
6022 @param WDI_TrafficStatsIndType
6023
6024 @see
6025
6026 @return Status of the request
6027*/
6028WDI_Status
6029WDI_TrafficStatsInd
6030(
6031 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6032)
6033{
6034
6035 WDI_EventInfoType wdiEventData;
6036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6037
6038 /*------------------------------------------------------------------------
6039 Sanity Check
6040 ------------------------------------------------------------------------*/
6041 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6042 {
6043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6044 "WDI API call before module is initialized - Fail request");
6045
6046 return WDI_STATUS_E_NOT_ALLOWED;
6047 }
6048
6049 /*------------------------------------------------------------------------
6050 Fill in Event data and post to the Main FSM
6051 ------------------------------------------------------------------------*/
6052 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6053 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6054 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6055 wdiEventData.pCBfnc = NULL;
6056 wdiEventData.pUserData = NULL;
6057
6058 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6059
6060}/*WDI_TrafficStatsInd*/
6061
Chet Lanctota96bb432013-03-18 10:26:30 -07006062#ifdef WLAN_FEATURE_11W
6063/**
6064 @brief WDI_ExcludeUnencryptedInd
6065 Register with HAL to receive/drop unencrypted frames
6066
6067 @param WDI_ExcludeUnencryptIndType
6068
6069 @see
6070
6071 @return Status of the request
6072*/
6073WDI_Status
6074WDI_ExcludeUnencryptedInd
6075(
6076 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6077)
6078{
6079
6080 WDI_EventInfoType wdiEventData;
6081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6082
6083 /*------------------------------------------------------------------------
6084 Sanity Check
6085 ------------------------------------------------------------------------*/
6086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6087 {
6088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6089 "WDI API call before module is initialized - Fail request");
6090
6091 return WDI_STATUS_E_NOT_ALLOWED;
6092 }
6093
6094 /*------------------------------------------------------------------------
6095 Fill in Event data and post to the Main FSM
6096 ------------------------------------------------------------------------*/
6097 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6098 wdiEventData.pEventData = pWdiExcUnencParams;
6099 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6100 wdiEventData.pCBfnc = NULL;
6101 wdiEventData.pUserData = NULL;
6102
6103 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6104
6105}/*WDI_TrafficStatsInd*/
6106#endif
6107
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006108/**
Yue Ma365933a2013-08-14 15:59:08 -07006109 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6110
6111 @param addPeriodicTxPtrnParams: Add Pattern parameters
6112
6113 @see
6114
6115 @return Status of the request
6116*/
6117WDI_Status
6118WDI_AddPeriodicTxPtrnInd
6119(
6120 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6121)
6122{
6123 WDI_EventInfoType wdiEventData;
6124
6125 /*-------------------------------------------------------------------------
6126 Sanity Check
6127 ------------------------------------------------------------------------*/
6128 if (eWLAN_PAL_FALSE == gWDIInitialized)
6129 {
6130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6131 "WDI API call before module is initialized - Fail request!");
6132
6133 return WDI_STATUS_E_NOT_ALLOWED;
6134 }
6135
6136 /*-------------------------------------------------------------------------
6137 Fill in Event data and post to the Main FSM
6138 ------------------------------------------------------------------------*/
6139 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6140 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6141 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6142 wdiEventData.pCBfnc = NULL;
6143 wdiEventData.pUserData = NULL;
6144
6145 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6146}
6147
6148/**
6149 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6150
6151 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6152
6153 @see
6154
6155 @return Status of the request
6156*/
6157WDI_Status
6158WDI_DelPeriodicTxPtrnInd
6159(
6160 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6161)
6162{
6163 WDI_EventInfoType wdiEventData;
6164
6165 /*-------------------------------------------------------------------------
6166 Sanity Check
6167 ------------------------------------------------------------------------*/
6168 if (eWLAN_PAL_FALSE == gWDIInitialized)
6169 {
6170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6171 "WDI API call before module is initialized - Fail request!");
6172
6173 return WDI_STATUS_E_NOT_ALLOWED;
6174 }
6175
6176 /*-------------------------------------------------------------------------
6177 Fill in Event data and post to the Main FSM
6178 ------------------------------------------------------------------------*/
6179 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6180 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6181 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6182 wdiEventData.pCBfnc = NULL;
6183 wdiEventData.pUserData = NULL;
6184
6185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6186}
6187
6188/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 @brief WDI_HALDumpCmdReq
6190 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006191
6192 @param halDumpCmdReqParams: Hal Dump Command Body
6193 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006195
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 @see
6197 @return Result of the function call
6198*/
6199WDI_Status WDI_HALDumpCmdReq
6200(
6201 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6202 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6203 void *pUserData
6204)
6205{
6206 WDI_EventInfoType wdiEventData;
6207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6208
6209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 ------------------------------------------------------------------------*/
6212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6213 {
6214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6215 "WDI API call before module is initialized - Fail request");
6216
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 }
6219
6220 /*------------------------------------------------------------------------
6221 Fill in Event data and post to the Main FSM
6222 ------------------------------------------------------------------------*/
6223 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6224 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6225 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6226 wdiEventData.pCBfnc = halDumpCmdRspCb;
6227 wdiEventData.pUserData = pUserData;
6228
6229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6230}
6231
Jeff Johnsone7245742012-09-05 17:12:55 -07006232/*============================================================================
6233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006235
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 ============================================================================*/
6237
6238/**
6239 @brief Main FSM Start function for all states except BUSY
6240
Jeff Johnsone7245742012-09-05 17:12:55 -07006241
6242 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006243 wdiEV: event posted to the main DAL FSM
6244 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 structure
6246
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 @see
6248 @return Result of the function call
6249*/
6250WDI_Status
6251WDI_PostMainEvent
6252(
Jeff Johnsone7245742012-09-05 17:12:55 -07006253 WDI_ControlBlockType* pWDICtx,
6254 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006255 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006256
Jeff Johnson295189b2012-06-20 16:38:30 -07006257)
6258{
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 WDI_Status wdiStatus;
6260 WDI_MainFuncType pfnWDIMainEvHdlr;
6261 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6263
6264 /*-------------------------------------------------------------------------
6265 Sanity check
6266 -------------------------------------------------------------------------*/
6267 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6268 ( wdiEV >= WDI_MAX_EVENT ))
6269 {
6270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6271 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6272 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006274 }
6275
6276 /*Access to the global state must be locked */
6277 wpalMutexAcquire(&pWDICtx->wptMutex);
6278
6279 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006281
6282 wdiOldState = pWDICtx->uGlobalState;
6283
6284 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006285 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6286 response comes from CCPU for the request sent by host:
6287 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 -07006288 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 -07006289 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 CCPU:
6291 don't change the state */
6292 if ( WDI_RESPONSE_EVENT != wdiEV)
6293 {
6294 /*Transition to BUSY State - the request is now being processed by the FSM,
6295 if the request fails we shall transition back to the old state, if not
6296 the request will manage its own state transition*/
6297 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6298 }
6299 /* If the state function associated with the EV is NULL it means that this
6300 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 {
6303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 }
6308 else
6309 {
6310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006313 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 }
6315
6316 /* If a request handles itself well it will end up in a success or in a
6317 pending
6318 Success - means that the request was processed and the proper state
6319 transition already occurred or will occur when the resp is received
6320 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006321
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 Pending - means the request could not be processed at this moment in time
6323 because the FSM was already busy so no state transition or dequeueing
6324 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006325
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 Success for synchronous case means that the transition may occur and
6327 processing of pending requests may continue - so it should go through
6328 and restores the state and continue processing queued requests*/
6329 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6330 ( WDI_STATUS_PENDING != wdiStatus ))
6331 {
6332 if ( WDI_RESPONSE_EVENT != wdiEV)
6333 {
6334 /*The request has failed or could not be processed - transition back to
6335 the old state - check to see if anything was queued and try to execute
6336 The dequeue logic should post a message to a thread and return - no
6337 actual processing can occur */
6338 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6339 }
6340 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006341
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 }
6343
6344 /* we have completed processing the event */
6345 wpalMutexRelease(&pWDICtx->wptMutex);
6346
Jeff Johnsone7245742012-09-05 17:12:55 -07006347 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006348
6349}/*WDI_PostMainEvent*/
6350
6351
6352/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006353 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006354--------------------------------------------------------------------------*/
6355/**
6356 @brief Main FSM Start function for all states except BUSY
6357
Jeff Johnsone7245742012-09-05 17:12:55 -07006358
6359 @param pWDICtx: pointer to the WLAN DAL context
6360 pEventData: pointer to the event information structure
6361
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 @see
6363 @return Result of the function call
6364*/
6365WDI_Status
6366WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006367(
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 WDI_ControlBlockType* pWDICtx,
6369 WDI_EventInfoType* pEventData
6370)
6371{
6372
6373 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006374 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006375 ----------------------------------------------------------------------*/
6376 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6377 {
6378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006379 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 pWDICtx, pEventData);
6381 return WDI_STATUS_E_FAILURE;
6382 }
6383
6384 wpalMutexAcquire(&pWDICtx->wptMutex);
6385
6386 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006387 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 ----------------------------------------------------------------------*/
6389 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6390 {
6391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6392 "Control Transport not yet Open - queueing the request");
6393
6394 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397 wpalMutexRelease(&pWDICtx->wptMutex);
6398 return WDI_STATUS_PENDING;
6399 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006400
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 wpalMutexRelease(&pWDICtx->wptMutex);
6402
6403 /*Return Success*/
6404 return WDI_ProcessRequest( pWDICtx, pEventData );
6405
6406}/*WDI_MainStart*/
6407
6408/**
6409 @brief Main FSM Response function for state INIT
6410
Jeff Johnsone7245742012-09-05 17:12:55 -07006411
6412 @param pWDICtx: pointer to the WLAN DAL context
6413 pEventData: pointer to the event information structure
6414
Jeff Johnson295189b2012-06-20 16:38:30 -07006415 @see
6416 @return Result of the function call
6417*/
6418WDI_Status
6419WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006420(
Jeff Johnson295189b2012-06-20 16:38:30 -07006421 WDI_ControlBlockType* pWDICtx,
6422 WDI_EventInfoType* pEventData
6423)
6424{
6425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006426 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006427 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006428 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006429
6430 /*Return Success*/
6431 return WDI_STATUS_E_NOT_ALLOWED;
6432}/* WDI_MainRspInit */
6433
6434/**
6435 @brief Main FSM Close function for all states except BUSY
6436
Jeff Johnsone7245742012-09-05 17:12:55 -07006437
6438 @param pWDICtx: pointer to the WLAN DAL context
6439 pEventData: pointer to the event information structure
6440
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 @see
6442 @return Result of the function call
6443*/
6444WDI_Status
6445WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006446(
Jeff Johnson295189b2012-06-20 16:38:30 -07006447 WDI_ControlBlockType* pWDICtx,
6448 WDI_EventInfoType* pEventData
6449)
6450{
6451
6452 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 ----------------------------------------------------------------------*/
6455 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6456 {
6457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006458 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006459 pWDICtx, pEventData);
6460 return WDI_STATUS_E_FAILURE;
6461 }
6462
6463 /*Return Success*/
6464 return WDI_ProcessRequest( pWDICtx, pEventData );
6465
6466}/*WDI_MainClose*/
6467/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006469--------------------------------------------------------------------------*/
6470/**
6471 @brief Main FSM Start function for state STARTED
6472
Jeff Johnsone7245742012-09-05 17:12:55 -07006473
6474 @param pWDICtx: pointer to the WLAN DAL context
6475 pEventData: pointer to the event information structure
6476
Jeff Johnson295189b2012-06-20 16:38:30 -07006477 @see
6478 @return Result of the function call
6479*/
6480WDI_Status
6481WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006482(
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 WDI_ControlBlockType* pWDICtx,
6484 WDI_EventInfoType* pEventData
6485)
6486{
6487 WDI_StartRspCb wdiStartRspCb = NULL;
6488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6489
6490 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006492 ----------------------------------------------------------------------*/
6493 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6494 {
6495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006496 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 pWDICtx, pEventData);
6498 return WDI_STATUS_E_FAILURE;
6499 }
6500
6501 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006502 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006503 ----------------------------------------------------------------------*/
6504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006505 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006506
6507 wpalMutexAcquire(&pWDICtx->wptMutex);
6508
6509 /*Transition back to started because the post function transitioned us to
6510 busy*/
6511 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6512
6513 /*Check to see if any request is pending*/
6514 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006515
Jeff Johnson295189b2012-06-20 16:38:30 -07006516 wpalMutexRelease(&pWDICtx->wptMutex);
6517
6518 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6520
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 /*Notify UMAC*/
6522 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6523
6524 /*Return Success*/
6525 return WDI_STATUS_SUCCESS;
6526
6527}/*WDI_MainStartStarted*/
6528
6529/**
6530 @brief Main FSM Stop function for state STARTED
6531
Jeff Johnsone7245742012-09-05 17:12:55 -07006532
6533 @param pWDICtx: pointer to the WLAN DAL context
6534 pEventData: pointer to the event information structure
6535
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 @see
6537 @return Result of the function call
6538*/
6539WDI_Status
6540WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006541(
Jeff Johnson295189b2012-06-20 16:38:30 -07006542 WDI_ControlBlockType* pWDICtx,
6543 WDI_EventInfoType* pEventData
6544)
6545{
6546 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006548 ----------------------------------------------------------------------*/
6549 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6550 {
6551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006552 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 pWDICtx, pEventData);
6554 return WDI_STATUS_E_FAILURE;
6555 }
6556
6557 /*State at this point is BUSY - because we enter this state before posting
6558 an event to the FSM in order to prevent potential race conditions*/
6559
6560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6561 "Processing stop request in FSM");
6562
6563 /*Return Success*/
6564 return WDI_ProcessRequest( pWDICtx, pEventData );
6565
6566}/*WDI_MainStopStarted*/
6567/**
6568 @brief Main FSM Request function for state started
6569
Jeff Johnsone7245742012-09-05 17:12:55 -07006570
6571 @param pWDICtx: pointer to the WLAN DAL context
6572 pEventData: pointer to the event information structure
6573
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 @see
6575 @return Result of the function call
6576*/
6577WDI_Status
6578WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006579(
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 WDI_ControlBlockType* pWDICtx,
6581 WDI_EventInfoType* pEventData
6582)
6583{
6584
6585 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 ----------------------------------------------------------------------*/
6588 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6589 {
6590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006591 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006592 pWDICtx, pEventData);
6593 return WDI_STATUS_E_FAILURE;
6594 }
6595
6596 /*State at this point is BUSY - because we enter this state before posting
6597 an event to the FSM in order to prevent potential race conditions*/
6598
6599 /*Return Success*/
6600 return WDI_ProcessRequest( pWDICtx, pEventData );
6601
6602}/*WDI_MainReqStarted*/
6603
6604/**
6605 @brief Main FSM Response function for all states except INIT
6606
Jeff Johnsone7245742012-09-05 17:12:55 -07006607
6608 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006610
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 @see
6612 @return Result of the function call
6613*/
6614WDI_Status
6615WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006616(
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 WDI_ControlBlockType* pWDICtx,
6618 WDI_EventInfoType* pEventData
6619)
6620{
Jeff Johnsone7245742012-09-05 17:12:55 -07006621 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 wpt_boolean expectedResponse;
6623
6624 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 ----------------------------------------------------------------------*/
6627 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6628 {
6629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006630 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 pWDICtx, pEventData);
6632 return WDI_STATUS_E_FAILURE;
6633 }
6634
6635 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6636 {
6637 /* we received an expected response */
6638 expectedResponse = eWLAN_PAL_TRUE;
6639
6640 /*We expect that we will transition to started after this processing*/
6641 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6642
6643 /* we are no longer expecting a response */
6644 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6645 }
6646 else
6647 {
6648 /* we received an indication or unexpected response */
6649 expectedResponse = eWLAN_PAL_FALSE;
6650 /* for indications no need to update state from what it is right
6651 now, unless it explicitly does it in the indication handler (say
6652 for device failure ind) */
6653 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6654 }
6655
6656 /*Process the response and indication */
6657 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6658
6659 /*Lock the CB as we are about to do a state transition*/
6660 wpalMutexAcquire(&pWDICtx->wptMutex);
6661
6662 /*Transition to the expected state after the response processing
6663 - this should always be started state with the following exceptions:
6664 1. processing of a failed start response
6665 2. device failure detected while processing response
6666 3. stop response received*/
6667 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006668
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 /*Dequeue request that may have been queued while we were waiting for the
6670 response */
6671 if ( expectedResponse )
6672 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 }
6675
6676 wpalMutexRelease(&pWDICtx->wptMutex);
6677
6678 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006680
6681}/*WDI_MainRsp*/
6682
6683/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006684 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006685--------------------------------------------------------------------------*/
6686/**
6687 @brief Main FSM Stop function for state STOPPED
6688
Jeff Johnsone7245742012-09-05 17:12:55 -07006689
6690 @param pWDICtx: pointer to the WLAN DAL context
6691 pEventData: pointer to the event information structure
6692
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 @see
6694 @return Result of the function call
6695*/
6696WDI_Status
6697WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006698(
Jeff Johnson295189b2012-06-20 16:38:30 -07006699 WDI_ControlBlockType* pWDICtx,
6700 WDI_EventInfoType* pEventData
6701)
6702{
6703 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 ----------------------------------------------------------------------*/
6706 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6707 {
6708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006709 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 pWDICtx, pEventData);
6711 return WDI_STATUS_E_FAILURE;
6712 }
6713
6714 /*We should normally not get a STOP request if we are already stopped
6715 since we should normally be stopped by the UMAC. However in some
6716 error situations we put ourselves in the stopped state without the
6717 UMAC knowing, so when we get a STOP request in this state we still
6718 process it since we need to clean up the underlying state */
6719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6720 "Processing stop request while stopped in FSM");
6721
6722 /*Return Success*/
6723 return WDI_ProcessRequest( pWDICtx, pEventData );
6724
6725}/*WDI_MainStopStopped*/
6726
6727/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006729--------------------------------------------------------------------------*/
6730/**
6731 @brief Main FSM Start function for state BUSY
6732
Jeff Johnsone7245742012-09-05 17:12:55 -07006733
6734 @param pWDICtx: pointer to the WLAN DAL context
6735 pEventData: pointer to the event information structure
6736
Jeff Johnson295189b2012-06-20 16:38:30 -07006737 @see
6738 @return Result of the function call
6739*/
6740WDI_Status
6741WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006742(
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 WDI_ControlBlockType* pWDICtx,
6744 WDI_EventInfoType* pEventData
6745)
6746{
6747 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006748 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 ----------------------------------------------------------------------*/
6750 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6751 {
6752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006753 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 pWDICtx, pEventData);
6755 return WDI_STATUS_E_FAILURE;
6756 }
6757
6758 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006759 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 ----------------------------------------------------------------------*/
6761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6762 "WDI Busy state - queue start request");
6763
6764 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006766
6767 /*Return Success*/
6768 return WDI_STATUS_PENDING;
6769}/*WDI_MainStartBusy*/
6770
6771/**
6772 @brief Main FSM Stop function for state BUSY
6773
Jeff Johnsone7245742012-09-05 17:12:55 -07006774
6775 @param pWDICtx: pointer to the WLAN DAL context
6776 pEventData: pointer to the event information structure
6777
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 @see
6779 @return Result of the function call
6780*/
6781WDI_Status
6782WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006783(
Jeff Johnson295189b2012-06-20 16:38:30 -07006784 WDI_ControlBlockType* pWDICtx,
6785 WDI_EventInfoType* pEventData
6786)
6787{
6788 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 ----------------------------------------------------------------------*/
6791 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6792 {
6793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006794 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 pWDICtx, pEventData);
6796 return WDI_STATUS_E_FAILURE;
6797 }
6798
6799 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006800 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 ----------------------------------------------------------------------*/
6802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6803 "WDI Busy state - queue stop request");
6804
Jeff Johnsone7245742012-09-05 17:12:55 -07006805 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006807
Jeff Johnson295189b2012-06-20 16:38:30 -07006808}/*WDI_MainStopBusy*/
6809
6810/**
6811 @brief Main FSM Request function for state BUSY
6812
Jeff Johnsone7245742012-09-05 17:12:55 -07006813
6814 @param pWDICtx: pointer to the WLAN DAL context
6815 pEventData: pointer to the event information structure
6816
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 @see
6818 @return Result of the function call
6819*/
6820WDI_Status
6821WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006822(
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 WDI_ControlBlockType* pWDICtx,
6824 WDI_EventInfoType* pEventData
6825)
6826{
6827 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 ----------------------------------------------------------------------*/
6830 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6831 {
6832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006833 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006834 pWDICtx, pEventData);
6835 return WDI_STATUS_E_FAILURE;
6836 }
6837
6838 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 ----------------------------------------------------------------------*/
6841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6842 "WDI Busy state - queue request %d because waiting for response %d",
6843 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6844
Jeff Johnsone7245742012-09-05 17:12:55 -07006845 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006847
Jeff Johnson295189b2012-06-20 16:38:30 -07006848}/*WDI_MainReqBusy*/
6849/**
6850 @brief Main FSM Close function for state BUSY
6851
Jeff Johnsone7245742012-09-05 17:12:55 -07006852
6853 @param pWDICtx: pointer to the WLAN DAL context
6854 pEventData: pointer to the event information structure
6855
Jeff Johnson295189b2012-06-20 16:38:30 -07006856 @see
6857 @return Result of the function call
6858*/
6859WDI_Status
6860WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006861(
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 WDI_ControlBlockType* pWDICtx,
6863 WDI_EventInfoType* pEventData
6864)
6865{
6866 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 ----------------------------------------------------------------------*/
6869 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6870 {
6871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006872 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 pWDICtx, pEventData);
6874 return WDI_STATUS_E_FAILURE;
6875 }
6876
6877 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 ----------------------------------------------------------------------*/
6880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6881 "WDI Busy state - queue close request");
6882
Jeff Johnsone7245742012-09-05 17:12:55 -07006883 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006884 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006885
Jeff Johnson295189b2012-06-20 16:38:30 -07006886}/*WDI_MainCloseBusy*/
6887
6888/**
6889 @brief Main FSM Shutdown function for INIT & STARTED states
6890
6891
6892 @param pWDICtx: pointer to the WLAN DAL context
6893 pEventData: pointer to the event information structure
6894
6895 @see
6896 @return Result of the function call
6897*/
6898WDI_Status
6899WDI_MainShutdown
6900(
6901 WDI_ControlBlockType* pWDICtx,
6902 WDI_EventInfoType* pEventData
6903)
6904{
6905 /*--------------------------------------------------------------------
6906 Sanity Check
6907 ----------------------------------------------------------------------*/
6908 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6909 {
6910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006911 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 pWDICtx, pEventData);
6913 return WDI_STATUS_E_FAILURE;
6914 }
6915
6916 /*State at this point is BUSY - because we enter this state before posting
6917 an event to the FSM in order to prevent potential race conditions*/
6918
6919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6920 "Processing shutdown request in FSM");
6921
6922 /*Return Success*/
6923 return WDI_ProcessRequest( pWDICtx, pEventData );
6924
6925}/*WDI_MainShutdown*/
6926
6927/**
6928 @brief Main FSM Shutdown function for BUSY state
6929
6930
6931 @param pWDICtx: pointer to the WLAN DAL context
6932 pEventData: pointer to the event information structure
6933
6934 @see
6935 @return Result of the function call
6936*/
6937WDI_Status
6938WDI_MainShutdownBusy
6939(
6940 WDI_ControlBlockType* pWDICtx,
6941 WDI_EventInfoType* pEventData
6942)
6943{
6944 /*--------------------------------------------------------------------
6945 Sanity Check
6946 ----------------------------------------------------------------------*/
6947 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6948 {
6949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006950 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 pWDICtx, pEventData);
6952 return WDI_STATUS_E_FAILURE;
6953 }
6954
6955 /* If you are waiting for a HAL response at this stage, you are not
6956 * going to get it. Riva is already shutdown/crashed.
6957 */
6958 wpalTimerStop(&gWDICb.wptResponseTimer);
6959
6960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6961 "Processing shutdown request in FSM: Busy state ");
6962
6963 return WDI_ProcessRequest( pWDICtx, pEventData );
6964
6965}/*WDI_MainShutdownBusy*/
6966
6967
Jeff Johnsone7245742012-09-05 17:12:55 -07006968/*=======================================================================
6969
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006971
Jeff Johnson295189b2012-06-20 16:38:30 -07006972*=======================================================================*/
6973
6974/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006976========================================================================*/
6977/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006979 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006980
6981 @param pWDICtx: pointer to the WLAN DAL context
6982 pEventData: pointer to the event information structure
6983
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 @see
6985 @return Result of the function call
6986*/
6987WDI_Status
6988WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006989(
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 WDI_ControlBlockType* pWDICtx,
6991 WDI_EventInfoType* pEventData
6992)
6993{
6994 WDI_StartReqParamsType* pwdiStartParams = NULL;
6995 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 wpt_uint16 usDataOffset = 0;
6998 wpt_uint16 usSendSize = 0;
6999
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 tHalMacStartReqMsg halStartReq;
7001 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7003
7004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 -------------------------------------------------------------------------*/
7007 if (( NULL == pEventData ) ||
7008 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7009 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7010 {
7011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 }
7016
7017 /*-----------------------------------------------------------------------
7018 Get message buffer
7019 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 pwdiStartParams->usConfigBufferLen;
7022
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 usLen,
7025 &pSendBuffer, &usDataOffset, &usSendSize))||
7026 ( usSendSize < (usDataOffset + usLen )))
7027 {
7028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007029 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 pEventData, pwdiStartParams, wdiStartRspCb);
7031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 }
7034
7035 /*-----------------------------------------------------------------------
7036 Fill in the message
7037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007038 halStartReq.startReqParams.driverType =
7039 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007040
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 halStartReq.startReqParams.uConfigBufferLen =
7042 pwdiStartParams->usConfigBufferLen;
7043 wpalMemoryCopy( pSendBuffer+usDataOffset,
7044 &halStartReq.startReqParams,
7045 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007046
Jeff Johnsone7245742012-09-05 17:12:55 -07007047 usDataOffset += sizeof(halStartReq.startReqParams);
7048 wpalMemoryCopy( pSendBuffer+usDataOffset,
7049 pwdiStartParams->pConfigBuffer,
7050 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007051
7052 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007053 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007054
7055 /*Save Low Level Ind CB and associated user data - it will be used further
7056 on when an indication is coming from the lower MAC*/
7057 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007059
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7066
Jeff Johnsone7245742012-09-05 17:12:55 -07007067
Jeff Johnson295189b2012-06-20 16:38:30 -07007068}/*WDI_ProcessStartReq*/
7069
7070/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007073
7074 @param pWDICtx: pointer to the WLAN DAL context
7075 pEventData: pointer to the event information structure
7076
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 @see
7078 @return Result of the function call
7079*/
7080WDI_Status
7081WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007082(
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 WDI_ControlBlockType* pWDICtx,
7084 WDI_EventInfoType* pEventData
7085)
7086{
7087 WDI_StopReqParamsType* pwdiStopParams = NULL;
7088 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 wpt_uint16 usDataOffset = 0;
7091 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007092 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7095
7096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 -------------------------------------------------------------------------*/
7099 if (( NULL == pEventData ) ||
7100 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7101 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7102 {
7103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007106 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 }
7108
7109 /*-----------------------------------------------------------------------
7110 Get message buffer
7111 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 sizeof(halStopReq.stopReqParams),
7114 &pSendBuffer, &usDataOffset, &usSendSize))||
7115 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7116 {
7117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007118 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 pEventData, pwdiStopParams, wdiStopRspCb);
7120 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007121 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 }
7123
7124 /*-----------------------------------------------------------------------
7125 Fill in the message
7126 -----------------------------------------------------------------------*/
7127 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7128 pwdiStopParams->wdiStopReason);
7129
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 wpalMemoryCopy( pSendBuffer+usDataOffset,
7131 &halStopReq.stopReqParams,
7132 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007133
7134 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007136
7137 /*! TO DO: stop the data services */
7138 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7139 {
7140 /*Stop the STA Table !UT- check this logic again
7141 It is safer to do it here than on the response - because a stop is imminent*/
7142 WDI_STATableStop(pWDICtx);
7143
7144 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007145 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7146 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 {
7148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7149 "WDI Init failed to reset power state event");
7150
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007152 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 }
7154 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007155 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7156 if( eWLAN_PAL_STATUS_SUCCESS != status )
7157 {
7158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007159 "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 -08007160 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007161 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007162 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007164 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007165 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007166 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7167 WDI_SET_POWER_STATE_TIMEOUT);
7168 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 {
7170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7171 "WDI Init failed to wait on an event");
7172
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007174 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 }
7176 }
7177
7178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7183
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007184fail:
7185 // Release the message buffer so we don't leak
7186 wpalMemoryFree(pSendBuffer);
7187
7188failRequest:
7189 //WDA should have failure check to avoid the memory leak
7190 return WDI_STATUS_E_FAILURE;
7191
Jeff Johnson295189b2012-06-20 16:38:30 -07007192}/*WDI_ProcessStopReq*/
7193
7194/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007197
7198 @param pWDICtx: pointer to the WLAN DAL context
7199 pEventData: pointer to the event information structure
7200
Jeff Johnson295189b2012-06-20 16:38:30 -07007201 @see
7202 @return Result of the function call
7203*/
7204WDI_Status
7205WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007206(
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 WDI_ControlBlockType* pWDICtx,
7208 WDI_EventInfoType* pEventData
7209)
7210{
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7213
7214 /*Lock control block for cleanup*/
7215 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007216
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 /*Clear all pending request*/
7218 WDI_ClearPendingRequests(pWDICtx);
7219
7220 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007221 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007222
7223 /* Close Data transport*/
7224 /* FTM mode does not open Data Path */
7225 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7226 {
7227 WDTS_Close(pWDICtx);
7228 }
7229
7230 /*Close the STA Table !UT- check this logic again*/
7231 WDI_STATableClose(pWDICtx);
7232
7233 /*close the PAL */
7234 wptStatus = wpalClose(pWDICtx->pPALContext);
7235 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7236 {
7237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7238 "Failed to wpal Close %d", wptStatus);
7239 WDI_ASSERT(0);
7240 }
7241
7242 /*Transition back to init state*/
7243 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7244
7245 wpalMutexRelease(&pWDICtx->wptMutex);
7246
7247 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007249
Jeff Johnsone7245742012-09-05 17:12:55 -07007250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007251}/*WDI_ProcessCloseReq*/
7252
7253
7254/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007256===========================================================================*/
7257
7258/**
7259 @brief Process Init Scan Request function (called when Main FSM
7260 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007261
7262 @param pWDICtx: pointer to the WLAN DAL context
7263 pEventData: pointer to the event information structure
7264
Jeff Johnson295189b2012-06-20 16:38:30 -07007265 @see
7266 @return Result of the function call
7267*/
7268WDI_Status
7269WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007270(
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 WDI_ControlBlockType* pWDICtx,
7272 WDI_EventInfoType* pEventData
7273)
7274{
7275 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7276 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007277 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 wpt_uint16 usDataOffset = 0;
7279 wpt_uint16 usSendSize = 0;
7280 wpt_uint8 i = 0;
7281
7282 tHalInitScanReqMsg halInitScanReqMsg;
7283
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 * It shold be removed once host and riva changes are in sync*/
7286 tHalInitScanConReqMsg halInitScanConReqMsg;
7287
7288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7289
7290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 -------------------------------------------------------------------------*/
7293 if (( NULL == pEventData ) ||
7294 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7295 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7296 {
7297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 }
7302
7303#if 0
7304 wpalMutexAcquire(&pWDICtx->wptMutex);
7305 /*-----------------------------------------------------------------------
7306 Check to see if SCAN is already in progress - if so reject the req
7307 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 -----------------------------------------------------------------------*/
7310 if ( pWDICtx->bScanInProgress )
7311 {
7312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7313 "Scan is already in progress - subsequent scan is not allowed"
7314 " until the first scan completes");
7315
7316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 }
7319
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7321 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007322
7323 wpalMutexRelease(&pWDICtx->wptMutex);
7324#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007325 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 * It shold be removed once host and riva changes are in sync*/
7329 /*-----------------------------------------------------------------------
7330 Get message buffer
7331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 sizeof(halInitScanConReqMsg.initScanParams),
7334 &pSendBuffer, &usDataOffset, &usSendSize))||
7335 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7336 {
7337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007338 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 }
7343
7344
7345 /*-----------------------------------------------------------------------
7346 Fill in the message
7347 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007348 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7350
7351 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7352 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7353
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7360
7361 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7362 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7363
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7365 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007366
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7369
7370 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007372 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7374 }
7375
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 wpalMemoryCopy( pSendBuffer+usDataOffset,
7377 &halInitScanConReqMsg.initScanParams,
7378 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 }
7380 else
7381 {
7382 /*-----------------------------------------------------------------------
7383 Get message buffer
7384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 sizeof(halInitScanReqMsg.initScanParams),
7387 &pSendBuffer, &usDataOffset, &usSendSize))||
7388 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7389 {
7390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007391 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 }
7396
7397
7398 /*-----------------------------------------------------------------------
7399 Fill in the message
7400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7403
7404 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7405 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7406
Jeff Johnsone7245742012-09-05 17:12:55 -07007407 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7413
7414 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7415 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7416
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7419
7420 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7421 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7424 }
7425
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 wpalMemoryCopy( pSendBuffer+usDataOffset,
7427 &halInitScanReqMsg.initScanParams,
7428 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 }
7430
7431 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433
7434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7439
7440}/*WDI_ProcessInitScanReq*/
7441
7442/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007445
7446 @param pWDICtx: pointer to the WLAN DAL context
7447 pEventData: pointer to the event information structure
7448
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 @see
7450 @return Result of the function call
7451*/
7452WDI_Status
7453WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007454(
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 WDI_ControlBlockType* pWDICtx,
7456 WDI_EventInfoType* pEventData
7457)
7458{
7459 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7460 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 wpt_uint16 usDataOffset = 0;
7463 wpt_uint16 usSendSize = 0;
7464
Jeff Johnsone7245742012-09-05 17:12:55 -07007465 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7467
7468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 -------------------------------------------------------------------------*/
7471 if (( NULL == pEventData ) ||
7472 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7473 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7474 {
7475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 }
7480
7481#if 0
7482 wpalMutexAcquire(&pWDICtx->wptMutex);
7483 /*-----------------------------------------------------------------------
7484 Check to see if SCAN is already in progress - start scan is only
7485 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7490 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7491 {
7492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7493 "Scan start not allowed in this state %d %d",
7494 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007495
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 }
7499
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007501
7502 wpalMutexRelease(&pWDICtx->wptMutex);
7503#endif
7504
7505 /*-----------------------------------------------------------------------
7506 Get message buffer
7507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 sizeof(halStartScanReqMsg.startScanParams),
7510 &pSendBuffer, &usDataOffset, &usSendSize))||
7511 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7512 {
7513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007514 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 }
7519
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 wpalMemoryCopy( pSendBuffer+usDataOffset,
7523 &halStartScanReqMsg.startScanParams,
7524 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007525
7526 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007528
7529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7534}/*WDI_ProcessStartScanReq*/
7535
7536
7537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007540
7541 @param pWDICtx: pointer to the WLAN DAL context
7542 pEventData: pointer to the event information structure
7543
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 @see
7545 @return Result of the function call
7546*/
7547WDI_Status
7548WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007549(
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 WDI_ControlBlockType* pWDICtx,
7551 WDI_EventInfoType* pEventData
7552)
7553{
7554 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7555 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 wpt_uint16 usDataOffset = 0;
7558 wpt_uint16 usSendSize = 0;
7559
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7562
7563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 -------------------------------------------------------------------------*/
7566 if (( NULL == pEventData ) ||
7567 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7568 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7569 {
7570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 }
7575
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7577 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 * forwarded to HAL and result in hang*/
7579#if 0
7580 wpalMutexAcquire(&pWDICtx->wptMutex);
7581 /*-----------------------------------------------------------------------
7582 Check to see if SCAN is already in progress - end scan is only
7583 allowed when a scan is ongoing and the state of the scan procedure
7584 is started
7585 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7588 {
7589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7590 "End start not allowed in this state %d %d",
7591 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007592
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 }
7596
Jeff Johnsone7245742012-09-05 17:12:55 -07007597 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007598
7599 wpalMutexRelease(&pWDICtx->wptMutex);
7600#endif
7601
7602 /*-----------------------------------------------------------------------
7603 Get message buffer
7604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 sizeof(halEndScanReqMsg.endScanParams),
7607 &pSendBuffer, &usDataOffset, &usSendSize))||
7608 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7609 {
7610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007611 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 }
7616
7617 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7618
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 wpalMemoryCopy( pSendBuffer+usDataOffset,
7620 &halEndScanReqMsg.endScanParams,
7621 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007622
7623 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625
7626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7631}/*WDI_ProcessEndScanReq*/
7632
7633
7634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007637
7638 @param pWDICtx: pointer to the WLAN DAL context
7639 pEventData: pointer to the event information structure
7640
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 @see
7642 @return Result of the function call
7643*/
7644WDI_Status
7645WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007646(
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 WDI_ControlBlockType* pWDICtx,
7648 WDI_EventInfoType* pEventData
7649)
7650{
7651 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7652 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 wpt_uint16 usDataOffset = 0;
7655 wpt_uint16 usSendSize = 0;
7656 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007657 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7660
7661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 -------------------------------------------------------------------------*/
7664 if (( NULL == pEventData ) ||
7665 ( NULL == pEventData->pEventData) ||
7666 ( NULL == pEventData->pCBfnc))
7667 {
7668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 }
7673
7674 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7675 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7677 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 * forwarded to HAL and result in hang*/
7679#if 0
7680 wpalMutexAcquire(&pWDICtx->wptMutex);
7681 /*-----------------------------------------------------------------------
7682 Check to see if SCAN is already in progress
7683 Finish scan gets invoked any scan states. ie. abort scan
7684 It should be allowed in any states.
7685 -----------------------------------------------------------------------*/
7686 if ( !pWDICtx->bScanInProgress )
7687 {
7688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7689 "Finish start not allowed in this state %d",
7690 pWDICtx->bScanInProgress );
7691
7692 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 }
7695
7696 /*-----------------------------------------------------------------------
7697 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7701 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 wpalMutexRelease(&pWDICtx->wptMutex);
7703#endif
7704
7705 if ( pWDICtx->bInBmps )
7706 {
7707 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007708 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7709 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7710 {
7711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007712 "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 -08007713 WDI_ASSERT(0);
7714 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 }
7716
7717 /*-----------------------------------------------------------------------
7718 Get message buffer
7719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 sizeof(halFinishScanReqMsg.finishScanParams),
7722 &pSendBuffer, &usDataOffset, &usSendSize))||
7723 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7724 {
7725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007726 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 }
7731
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7734
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7737
Jeff Johnsone7245742012-09-05 17:12:55 -07007738 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7740
7741 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7742 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7743
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7750
Jeff Johnsone7245742012-09-05 17:12:55 -07007751 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7753
7754 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7755 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7758 }
7759
7760 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7761 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7762
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 wpalMemoryCopy( pSendBuffer+usDataOffset,
7764 &halFinishScanReqMsg.finishScanParams,
7765 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007766
7767 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769
7770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7775}/*WDI_ProcessFinishScanReq*/
7776
7777
7778/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007780==========================================================================*/
7781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 @brief Process BSS Join for a given Session
7783
7784 @param pWDICtx: pointer to the WLAN DAL context
7785 pEventData: pointer to the event information structure
7786
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 @see
7788 @return Result of the function call
7789*/
7790WDI_Status
7791WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007792(
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 WDI_ControlBlockType* pWDICtx,
7794 WDI_JoinReqParamsType* pwdiJoinParams,
7795 WDI_JoinRspCb wdiJoinRspCb,
7796 void* pUserData
7797)
7798{
7799 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 wpt_uint16 usDataOffset = 0;
7802 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007804
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7807
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007808 wpalMutexAcquire(&pWDICtx->wptMutex);
7809
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 /*------------------------------------------------------------------------
7811 Check to see if we have any session with this BSSID already stored, we
7812 should not
7813 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7815 pwdiJoinParams->wdiReqInfo.macBSSID,
7816 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007817
7818 if ( NULL != pBSSSes )
7819 {
7820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007821 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7822 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007823
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007824 /*reset the bAssociationInProgress otherwise the next
7825 *join request will be queued*/
7826 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7827 wpalMutexRelease(&pWDICtx->wptMutex);
7828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 }
7830
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 if ( NULL == pBSSSes )
7836 {
7837
7838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7839 "DAL has no free sessions - cannot run another join");
7840
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007841 /*reset the bAssociationInProgress otherwise the next
7842 *join request will be queued*/
7843 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 }
7847
7848 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7850 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 WDI_MAC_ADDR_LEN);
7852
7853 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 wpalMutexRelease(&pWDICtx->wptMutex);
7858
7859 /*-----------------------------------------------------------------------
7860 Get message buffer
7861 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 sizeof(halJoinReqMsg.joinReqParams),
7864 &pSendBuffer, &usDataOffset, &usSendSize))||
7865 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7866 {
7867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007868 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 pUserData, pwdiJoinParams, wdiJoinRspCb);
7870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 }
7873
7874 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007876
7877 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 pwdiJoinParams->wdiReqInfo.macSTASelf,
7879 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007880
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7883
7884 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7885
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007886#ifdef WLAN_FEATURE_VOWIFI
7887 halJoinReqMsg.joinReqParams.maxTxPower =
7888 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7889#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7892#endif
7893
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7896 wdiSecondaryChannelOffset);
7897
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 wpalMemoryCopy( pSendBuffer+usDataOffset,
7899 &halJoinReqMsg.joinReqParams,
7900 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007901
7902 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007904
7905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7909 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007910
7911}/*WDI_ProcessBSSSessionJoinReq*/
7912
7913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007916
7917 @param pWDICtx: pointer to the WLAN DAL context
7918 pEventData: pointer to the event information structure
7919
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 @see
7921 @return Result of the function call
7922*/
7923WDI_Status
7924WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007925(
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 WDI_ControlBlockType* pWDICtx,
7927 WDI_EventInfoType* pEventData
7928)
7929{
7930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7931 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7932 WDI_JoinRspCb wdiJoinRspCb = NULL;
7933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7934
7935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 -------------------------------------------------------------------------*/
7938 if (( NULL == pEventData ) ||
7939 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7940 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7941 {
7942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007947
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 /*-------------------------------------------------------------------------
7949 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
7952 wpalMutexAcquire(&pWDICtx->wptMutex);
7953
7954 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7955 {
7956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7957 "Association is currently in progress, queueing new join req");
7958
7959 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 pwdiJoinParams->wdiReqInfo.macBSSID);
7962
7963 wpalMutexRelease(&pWDICtx->wptMutex);
7964
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 }
7967
7968 /*Starting a new association */
7969 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7970 wpalMutexRelease(&pWDICtx->wptMutex);
7971
7972 /*Process the Join Request*/
7973 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7974 wdiJoinRspCb,pEventData->pUserData);
7975
7976}/*WDI_ProcessJoinReq*/
7977
7978
7979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007982
7983 @param pWDICtx: pointer to the WLAN DAL context
7984 pEventData: pointer to the event information structure
7985
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 @see
7987 @return Result of the function call
7988*/
7989WDI_Status
7990WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007991(
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 WDI_ControlBlockType* pWDICtx,
7993 WDI_EventInfoType* pEventData
7994)
7995{
7996 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7997 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 wpt_uint16 uMsgSize = 0;
8001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 wpt_uint16 usDataOffset = 0;
8003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8008
8009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 -------------------------------------------------------------------------*/
8012 if (( NULL == pEventData ) ||
8013 ( NULL == pEventData->pEventData ) ||
8014 ( NULL == pEventData->pCBfnc ))
8015 {
8016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 }
8021
8022 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8023 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8024 /*-------------------------------------------------------------------------
8025 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 -------------------------------------------------------------------------*/
8028 wpalMutexAcquire(&pWDICtx->wptMutex);
8029
8030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8034 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8035 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008036
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 {
8039#ifdef WLAN_FEATURE_VOWIFI_11R
8040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 if ( NULL == pBSSSes )
8045 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008046
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8048 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008049
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008053
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8056 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008058
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8062#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 * Request in case of IBSS*/
8065 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8066 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8067 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8068 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8069 {
8070 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 if ( NULL == pBSSSes )
8075 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008076
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8078 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008079
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008083
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8086 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008088
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8092 }
8093 else
8094 {
8095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8097 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8098 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8099
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 /* for IBSS testing */
8101 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 }
8104#endif
8105 }
8106
8107 /*------------------------------------------------------------------------
8108 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 ------------------------------------------------------------------------*/
8111 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8112 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8114 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8115 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8116 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008117
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008119
8120 wpalMutexRelease(&pWDICtx->wptMutex);
8121
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 }
8124
8125 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8127 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 sizeof(pWDICtx->wdiCachedConfigBssReq));
8129
8130 wpalMutexRelease(&pWDICtx->wptMutex);
8131
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8133#ifdef WLAN_FEATURE_11AC
8134 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008135 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 else
8137#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008138 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008139
8140 /*-----------------------------------------------------------------------
8141 Get message buffer
8142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8145 ( usSendSize < (usDataOffset + uMsgSize )))
8146 {
8147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008148 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 }
8153
8154 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008155#ifdef WLAN_FEATURE_11AC
8156 if (WDI_getFwWlanFeatCaps(DOT11AC))
8157 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8158 &pwdiConfigBSSParams->wdiReqInfo);
8159 else
8160#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 &pwdiConfigBSSParams->wdiReqInfo);
8163
8164 /* Need to fill in the STA Index to invalid, since at this point we have not
8165 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167
8168 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8170
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008171#ifdef WLAN_FEATURE_11AC
8172 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8173 wpalMemoryCopy( pSendBuffer+usDataOffset,
8174 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8175 uMsgSize);
8176 }else
8177#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008178 {
8179 if ( uMsgSize <= sizeof(tConfigBssParams) )
8180 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008181 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008182 &halConfigBssReqMsg.uBssParams.configBssParams,
8183 uMsgSize);
8184 }
8185 else
8186 {
8187 return WDI_STATUS_E_FAILURE;
8188 }
8189 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008190
8191 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008193
8194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8198 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 WDI_CONFIG_BSS_RESP);
8200
8201}/*WDI_ProcessConfigBSSReq*/
8202
8203
8204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008207
8208 @param pWDICtx: pointer to the WLAN DAL context
8209 pEventData: pointer to the event information structure
8210
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 @see
8212 @return Result of the function call
8213*/
8214WDI_Status
8215WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008216(
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 WDI_ControlBlockType* pWDICtx,
8218 WDI_EventInfoType* pEventData
8219)
8220{
8221 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8222 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 wpt_uint16 usDataOffset = 0;
8227 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008228 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008229
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8232
8233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 -------------------------------------------------------------------------*/
8236 if (( NULL == pEventData ) ||
8237 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8238 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8239 {
8240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 }
8245
8246 /*-------------------------------------------------------------------------
8247 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 -------------------------------------------------------------------------*/
8250 wpalMutexAcquire(&pWDICtx->wptMutex);
8251
8252 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8256 pwdiDelBSSParams->ucBssIdx,
8257 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008258
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 {
8261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 "%s: BSS does not yet exist. ucBssIdx %d",
8263 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008264
8265 wpalMutexRelease(&pWDICtx->wptMutex);
8266
8267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008269
8270 /*------------------------------------------------------------------------
8271 Check if this BSS is being currently processed or queued,
8272 if queued - queue the new request as well
8273 ------------------------------------------------------------------------*/
8274 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8277 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8278 __func__, pwdiDelBSSParams->ucBssIdx);
8279
8280 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8281
8282 wpalMutexRelease(&pWDICtx->wptMutex);
8283
8284 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008286
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 /*-----------------------------------------------------------------------
8288 If we receive a Del BSS request for an association that is already in
8289 progress, it indicates that the assoc has failed => we no longer have
8290 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 -----------------------------------------------------------------------*/
8293 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8294 {
8295 /*We can switch to false here because even if a subsequent Join comes in
8296 it will only be processed when DAL transitions out of BUSY state which
8297 happens when the Del BSS request comes */
8298 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8299
8300 /*Former association is complete - prepare next pending assoc for
8301 processing */
8302 WDI_DequeueAssocRequest(pWDICtx);
8303 }
8304
8305 wpalMutexRelease(&pWDICtx->wptMutex);
8306 /*-----------------------------------------------------------------------
8307 Get message buffer
8308 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 sizeof(halBssReqMsg.deleteBssParams),
8311 &pSendBuffer, &usDataOffset, &usSendSize))||
8312 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8313 {
8314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008315 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 }
8320
8321 /*Fill in the message request structure*/
8322
8323 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008324 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 wpalMemoryCopy( pSendBuffer+usDataOffset,
8327 &halBssReqMsg.deleteBssParams,
8328 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008329
8330 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
Jeff Johnsone7245742012-09-05 17:12:55 -07008333
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8339
Jeff Johnsone7245742012-09-05 17:12:55 -07008340
Jeff Johnson295189b2012-06-20 16:38:30 -07008341}/*WDI_ProcessDelBSSReq*/
8342
8343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008346
8347 @param pWDICtx: pointer to the WLAN DAL context
8348 pEventData: pointer to the event information structure
8349
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 @see
8351 @return Result of the function call
8352*/
8353WDI_Status
8354WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008355(
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 WDI_ControlBlockType* pWDICtx,
8357 WDI_EventInfoType* pEventData
8358)
8359{
8360 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8361 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008362 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008363 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 wpt_uint16 usDataOffset = 0;
8366 wpt_uint16 usSendSize = 0;
8367 wpt_uint16 uMsgSize = 0;
8368 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8373
8374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 -------------------------------------------------------------------------*/
8377 if (( NULL == pEventData ) ||
8378 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8379 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8380 {
8381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 }
8386
8387 /*-------------------------------------------------------------------------
8388 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 -------------------------------------------------------------------------*/
8391 wpalMutexAcquire(&pWDICtx->wptMutex);
8392
8393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8397 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8398 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008399
8400 if ( NULL == pBSSSes )
8401 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8403 "%s: Association sequence for this BSS does not yet exist - "
8404 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8405 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008406
8407 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 }
8410
8411 /*------------------------------------------------------------------------
8412 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008414 ------------------------------------------------------------------------*/
8415 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8416 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8418 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8419 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008420
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008422
8423 wpalMutexRelease(&pWDICtx->wptMutex);
8424
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 }
8427
8428 /*-----------------------------------------------------------------------
8429 If Post Assoc was not yet received - the current association must
8430 be in progress
8431 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8434 {
8435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8436 "Association sequence for this BSS association no longer in "
8437 "progress - not allowed");
8438
8439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 }
8442
8443 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 -----------------------------------------------------------------------*/
8446 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8447 {
8448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8449 "Post Assoc not allowed before JOIN - failing request");
8450
8451 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 }
8454
8455 wpalMutexRelease(&pWDICtx->wptMutex);
8456
8457 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8458 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8459 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8464 ( usSendSize < (usDataOffset + uMsgSize )))
8465 {
8466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008467 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 }
8472
8473 /*Copy the STA parameters */
8474 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8475 &pwdiPostAssocParams->wdiSTAParams );
8476
8477 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WDI_STATableFindStaidByAddr(pWDICtx,
8480 pwdiPostAssocParams->wdiSTAParams.macSTA,
8481 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8482 {
8483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008484 MAC_ADDRESS_STR
8485 ": This station does not exist in the WDI Station Table",
8486 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008488 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 }
8491
8492 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 pBSSSes->ucBSSIdx;
8495
8496 /*Copy the BSS parameters */
8497 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8498 &pwdiPostAssocParams->wdiBSSParams);
8499
8500 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 WDI_STATableFindStaidByAddr(pWDICtx,
8503 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 {
8506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008507 MAC_ADDRESS_STR
8508 ": This station does not exist in the WDI Station Table",
8509 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008511 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 }
8514
8515 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 pBSSSes->ucBSSIdx;
8518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519
8520 wpalMemoryCopy( pSendBuffer+usDataOffset,
8521 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8522 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
8524 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8525
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8527 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8528 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008529
Jeff Johnsone7245742012-09-05 17:12:55 -07008530
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008533
Jeff Johnsone7245742012-09-05 17:12:55 -07008534
8535 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008538
8539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8544
Jeff Johnsone7245742012-09-05 17:12:55 -07008545
Jeff Johnson295189b2012-06-20 16:38:30 -07008546}/*WDI_ProcessPostAssocReq*/
8547
8548/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008551
8552 @param pWDICtx: pointer to the WLAN DAL context
8553 pEventData: pointer to the event information structure
8554
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 @see
8556 @return Result of the function call
8557*/
8558WDI_Status
8559WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008560(
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 WDI_ControlBlockType* pWDICtx,
8562 WDI_EventInfoType* pEventData
8563)
8564{
8565 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8566 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 wpt_uint16 usDataOffset = 0;
8571 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8574
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8577
8578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 -------------------------------------------------------------------------*/
8581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8582 ( NULL == pEventData->pCBfnc ))
8583 {
8584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 }
8589
8590 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8591 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8592 /*-------------------------------------------------------------------------
8593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 -------------------------------------------------------------------------*/
8596 wpalMutexAcquire(&pWDICtx->wptMutex);
8597
8598 /*------------------------------------------------------------------------
8599 Find the BSS for which the request is made and identify WDI session
8600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8602 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 &macBSSID))
8604 {
8605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008606 "This station does not exist in the WDI Station Table %d",
8607 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 }
8611
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8613 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8616 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8617 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008618
8619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 }
8622
8623 /*------------------------------------------------------------------------
8624 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 ------------------------------------------------------------------------*/
8627 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8628 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8630 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8631 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008632
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 }
8637
8638 wpalMutexRelease(&pWDICtx->wptMutex);
8639 /*-----------------------------------------------------------------------
8640 Get message buffer
8641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 sizeof(halDelStaReqMsg.delStaParams),
8644 &pSendBuffer, &usDataOffset, &usSendSize))||
8645 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8646 {
8647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008648 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 }
8653
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8655 wpalMemoryCopy( pSendBuffer+usDataOffset,
8656 &halDelStaReqMsg.delStaParams,
8657 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008658
8659 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661
8662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8667
8668}/*WDI_ProcessDelSTAReq*/
8669
8670
8671/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008673==========================================================================*/
8674/**
8675 @brief Process Set BSS Key Request function (called when Main FSM
8676 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008677
8678 @param pWDICtx: pointer to the WLAN DAL context
8679 pEventData: pointer to the event information structure
8680
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 @see
8682 @return Result of the function call
8683*/
8684WDI_Status
8685WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008686(
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 WDI_ControlBlockType* pWDICtx,
8688 WDI_EventInfoType* pEventData
8689)
8690{
8691 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8692 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 wpt_uint16 usDataOffset = 0;
8697 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8700 wpt_uint8 keyIndex = 0;
8701
8702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8703
8704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 -------------------------------------------------------------------------*/
8707 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8708 ( NULL == pEventData->pCBfnc ))
8709 {
8710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 }
8715
8716 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8717 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8718 /*-------------------------------------------------------------------------
8719 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 -------------------------------------------------------------------------*/
8722 wpalMutexAcquire(&pWDICtx->wptMutex);
8723
8724 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8728 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8729 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008730
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 {
8733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8735 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008736
8737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 }
8740
8741 /*------------------------------------------------------------------------
8742 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 ------------------------------------------------------------------------*/
8745 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8748 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8749 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 }
8755
8756
8757 wpalMutexRelease(&pWDICtx->wptMutex);
8758 /*-----------------------------------------------------------------------
8759 Get message buffer
8760 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8763 &pSendBuffer, &usDataOffset, &usSendSize))||
8764 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8765 {
8766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008767 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 }
8772
8773 /*-----------------------------------------------------------------------
8774 Copy the Key parameters into the HAL message
8775 -----------------------------------------------------------------------*/
8776
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8781
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8784
8785 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8786 keyIndex++)
8787 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8790 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8791 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8792 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8793 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8794 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008796 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8801 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 WDI_MAX_KEY_LENGTH);
8804 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008805
8806 wpalMemoryCopy( pSendBuffer+usDataOffset,
8807 &halSetBssKeyReqMsg.setBssKeyParams,
8808 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008809
8810 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008812
8813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8817 wdiSetBSSKeyRspCb, pEventData->pUserData,
8818 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008819
8820}/*WDI_ProcessSetBssKeyReq*/
8821
8822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008825
8826 @param pWDICtx: pointer to the WLAN DAL context
8827 pEventData: pointer to the event information structure
8828
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 @see
8830 @return Result of the function call
8831*/
8832WDI_Status
8833WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008834(
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 WDI_ControlBlockType* pWDICtx,
8836 WDI_EventInfoType* pEventData
8837)
8838{
8839 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8840 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 wpt_uint16 usDataOffset = 0;
8845 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8849
8850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 -------------------------------------------------------------------------*/
8853 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8854 ( NULL == pEventData->pCBfnc ))
8855 {
8856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 }
8861
8862 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8863 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8864 /*-------------------------------------------------------------------------
8865 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 -------------------------------------------------------------------------*/
8868 wpalMutexAcquire(&pWDICtx->wptMutex);
8869
8870 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8874 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8875 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008876
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 {
8879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8881 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008882
8883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 }
8886
8887 /*------------------------------------------------------------------------
8888 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 ------------------------------------------------------------------------*/
8891 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8892 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8894 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8895 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 }
8901
8902
8903 wpalMutexRelease(&pWDICtx->wptMutex);
8904
8905 /*-----------------------------------------------------------------------
8906 Get message buffer
8907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8910 &pSendBuffer, &usDataOffset, &usSendSize))||
8911 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8912 {
8913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008914 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 }
8919 /*-----------------------------------------------------------------------
8920 Copy the Key parameters into the HAL message
8921 -----------------------------------------------------------------------*/
8922 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8923
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8926
8927 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8928
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8931
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 wpalMemoryCopy( pSendBuffer+usDataOffset,
8933 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8934 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008935
8936 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938
8939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008945}/*WDI_ProcessRemoveBssKeyReq*/
8946
8947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008950
8951 @param pWDICtx: pointer to the WLAN DAL context
8952 pEventData: pointer to the event information structure
8953
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 @see
8955 @return Result of the function call
8956*/
8957WDI_Status
8958WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008959(
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 WDI_ControlBlockType* pWDICtx,
8961 WDI_EventInfoType* pEventData
8962)
8963{
8964 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8965 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8966 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 wpt_uint16 usDataOffset = 0;
8969 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8974 wpt_uint8 keyIndex = 0;
8975
8976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8977
8978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 -------------------------------------------------------------------------*/
8981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8982 ( NULL == pEventData->pCBfnc ))
8983 {
8984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 }
8989
8990 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8991 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8992 /*-------------------------------------------------------------------------
8993 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 -------------------------------------------------------------------------*/
8996 wpalMutexAcquire(&pWDICtx->wptMutex);
8997
8998 /*------------------------------------------------------------------------
8999 Find the BSS for which the request is made and identify WDI session
9000 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9002 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 &macBSSID))
9004 {
9005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009006 "This station does not exist in the WDI Station Table %d",
9007 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 }
9011
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9013 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9016 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9017 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009018
9019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009022
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 /*------------------------------------------------------------------------
9024 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 ------------------------------------------------------------------------*/
9027 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9028 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9030 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9031 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009032
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 }
9037
9038
9039 wpalMutexRelease(&pWDICtx->wptMutex);
9040 /*-----------------------------------------------------------------------
9041 Get message buffer
9042 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9045 &pSendBuffer, &usDataOffset, &usSendSize))||
9046 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9047 {
9048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009049 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054 /*-----------------------------------------------------------------------
9055 Copy the STA Key parameters into the HAL message
9056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9059
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9062
9063 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9064
9065 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9066
9067 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9068
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9070 keyIndex++)
9071 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9074 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9075 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9077 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9078 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9085 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 WDI_MAX_KEY_LENGTH);
9088 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009089
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 wpalMemoryCopy( pSendBuffer+usDataOffset,
9091 &halSetStaKeyReqMsg.setStaKeyParams,
9092 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009093
9094 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096
9097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9101 wdiSetSTAKeyRspCb, pEventData->pUserData,
9102 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009103
9104}/*WDI_ProcessSetSTAKeyReq*/
9105
9106/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009109
9110 @param pWDICtx: pointer to the WLAN DAL context
9111 pEventData: pointer to the event information structure
9112
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 @see
9114 @return Result of the function call
9115*/
9116WDI_Status
9117WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009118(
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 WDI_ControlBlockType* pWDICtx,
9120 WDI_EventInfoType* pEventData
9121)
9122{
9123 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9124 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9125 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 wpt_uint16 usDataOffset = 0;
9128 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 wpt_macAddr macBSSID;
9131 wpt_uint8 ucCurrentBSSSesIdx;
9132 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9134
9135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 -------------------------------------------------------------------------*/
9138 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9139 ( NULL == pEventData->pCBfnc ))
9140 {
9141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 }
9146
9147 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9148 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9149 /*-------------------------------------------------------------------------
9150 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -------------------------------------------------------------------------*/
9153 wpalMutexAcquire(&pWDICtx->wptMutex);
9154
9155 /*------------------------------------------------------------------------
9156 Find the BSS for which the request is made and identify WDI session
9157 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9159 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 &macBSSID))
9161 {
9162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009163 "This station does not exist in the WDI Station Table %d",
9164 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 }
9168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9170 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9173 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9174 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009179
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 /*------------------------------------------------------------------------
9181 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 ------------------------------------------------------------------------*/
9184 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9185 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9187 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009189
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 }
9194
9195
9196
9197 wpalMutexRelease(&pWDICtx->wptMutex);
9198 /*-----------------------------------------------------------------------
9199 Get message buffer
9200 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9203 &pSendBuffer, &usDataOffset, &usSendSize))||
9204 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9205 {
9206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009207 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 }
9212
9213 /*-----------------------------------------------------------------------
9214 Copy the Key parameters into the HAL message
9215 -----------------------------------------------------------------------*/
9216
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9219
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9222
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9225
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9228
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 wpalMemoryCopy( pSendBuffer+usDataOffset,
9230 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9231 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009232
9233 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009235
9236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009242
9243}/*WDI_ProcessRemoveSTAKeyReq*/
9244
9245/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009248
9249 @param pWDICtx: pointer to the WLAN DAL context
9250 pEventData: pointer to the event information structure
9251
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 @see
9253 @return Result of the function call
9254*/
9255WDI_Status
9256WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009257(
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 WDI_ControlBlockType* pWDICtx,
9259 WDI_EventInfoType* pEventData
9260)
9261{
9262 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9263 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9264 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 wpt_uint16 usDataOffset = 0;
9267 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9272 wpt_uint8 keyIndex = 0;
9273
9274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9275
9276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 -------------------------------------------------------------------------*/
9279 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9280 ( NULL == pEventData->pCBfnc ))
9281 {
9282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 }
9287
9288 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9289 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9290 /*-------------------------------------------------------------------------
9291 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 -------------------------------------------------------------------------*/
9294 wpalMutexAcquire(&pWDICtx->wptMutex);
9295
9296 /*------------------------------------------------------------------------
9297 Find the BSS for which the request is made and identify WDI session
9298 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9300 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 &macBSSID))
9302 {
9303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009304 "This station does not exist in the WDI Station Table %d",
9305 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 }
9309
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9311 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 {
9313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009314 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009316
9317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009320
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 /*------------------------------------------------------------------------
9322 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 ------------------------------------------------------------------------*/
9325 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9326 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9328 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9329 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009330
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 }
9335
9336
9337 wpalMutexRelease(&pWDICtx->wptMutex);
9338 /*-----------------------------------------------------------------------
9339 Get message buffer
9340 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9343 &pSendBuffer, &usDataOffset, &usSendSize))||
9344 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9345 {
9346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009347 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
9352 /*-----------------------------------------------------------------------
9353 Copy the STA Key parameters into the HAL message
9354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9357
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9360
9361 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9362
9363 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9364
9365 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9366
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9368 keyIndex++)
9369 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9372 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9373 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9374 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9375 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9376 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9383 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 WDI_MAX_KEY_LENGTH);
9386 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009387
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 wpalMemoryCopy( pSendBuffer+usDataOffset,
9389 &halSetStaKeyReqMsg.setStaKeyParams,
9390 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009391
9392 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009394
9395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9399 wdiSetSTAKeyRspCb, pEventData->pUserData,
9400 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009401
9402}/*WDI_ProcessSetSTABcastKeyReq*/
9403
9404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009407
9408 @param pWDICtx: pointer to the WLAN DAL context
9409 pEventData: pointer to the event information structure
9410
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 @see
9412 @return Result of the function call
9413*/
9414WDI_Status
9415WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009416(
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 WDI_ControlBlockType* pWDICtx,
9418 WDI_EventInfoType* pEventData
9419)
9420{
9421 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9422 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 wpt_uint16 usDataOffset = 0;
9426 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 wpt_macAddr macBSSID;
9429 wpt_uint8 ucCurrentBSSSesIdx;
9430 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9432
9433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 -------------------------------------------------------------------------*/
9436 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9437 ( NULL == pEventData->pCBfnc ))
9438 {
9439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 }
9444
9445 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9446 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9447 /*-------------------------------------------------------------------------
9448 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 -------------------------------------------------------------------------*/
9451 wpalMutexAcquire(&pWDICtx->wptMutex);
9452
9453 /*------------------------------------------------------------------------
9454 Find the BSS for which the request is made and identify WDI session
9455 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9457 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 &macBSSID))
9459 {
9460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009461 "This station does not exist in the WDI Station Table %d",
9462 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 }
9466
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9468 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9471 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9472 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009473
9474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009477
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 /*------------------------------------------------------------------------
9479 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 ------------------------------------------------------------------------*/
9482 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9483 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9485 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9486 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009487
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 }
9492
9493
9494
9495 wpalMutexRelease(&pWDICtx->wptMutex);
9496 /*-----------------------------------------------------------------------
9497 Get message buffer
9498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9501 &pSendBuffer, &usDataOffset, &usSendSize))||
9502 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9503 {
9504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009505 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 }
9510
9511 /*-----------------------------------------------------------------------
9512 Copy the Key parameters into the HAL message
9513 -----------------------------------------------------------------------*/
9514
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9520
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9526
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 wpalMemoryCopy( pSendBuffer+usDataOffset,
9528 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9529 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009530
9531 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009533
9534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
9541}/*WDI_ProcessRemoveSTABcastKeyReq*/
9542
9543/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009545==========================================================================*/
9546/**
9547 @brief Process Add TSpec Request function (called when Main FSM
9548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009549
9550 @param pWDICtx: pointer to the WLAN DAL context
9551 pEventData: pointer to the event information structure
9552
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 @see
9554 @return Result of the function call
9555*/
9556WDI_Status
9557WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009558(
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_ControlBlockType* pWDICtx,
9560 WDI_EventInfoType* pEventData
9561)
9562{
9563 WDI_AddTSReqParamsType* pwdiAddTSParams;
9564 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 wpt_uint16 usDataOffset = 0;
9569 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 wpt_macAddr macBSSID;
9572 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009573
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9575
9576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 -------------------------------------------------------------------------*/
9579 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9580 ( NULL == pEventData->pCBfnc ))
9581 {
9582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 }
9587
9588 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9589 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9590 /*-------------------------------------------------------------------------
9591 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 -------------------------------------------------------------------------*/
9594 wpalMutexAcquire(&pWDICtx->wptMutex);
9595
9596 /*------------------------------------------------------------------------
9597 Find the BSS for which the request is made and identify WDI session
9598 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9600 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 &macBSSID))
9602 {
9603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009604 "This station does not exist in the WDI Station Table %d",
9605 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 }
9609
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9611 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9614 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9615 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009616
9617 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009620
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 /*------------------------------------------------------------------------
9622 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 ------------------------------------------------------------------------*/
9625 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9626 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9628 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9629 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009630
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 }
9635
9636 wpalMutexRelease(&pWDICtx->wptMutex);
9637 /*-----------------------------------------------------------------------
9638 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9642 sizeof(halAddTsParams),
9643 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 &usSendSize))||
9645 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9646 {
9647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009648 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 }
9653
9654 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9655 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9656
9657 //TSPEC IE
9658 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9659 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9690
9691 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9706
9707 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9712
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 wpalMemoryCopy( pSendBuffer+usDataOffset,
9714 &halAddTsParams,
9715 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009716
9717 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009719
9720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009726}/*WDI_ProcessAddTSpecReq*/
9727
9728
9729/**
9730 @brief Process Del TSpec Request function (called when Main FSM
9731 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009732
9733 @param pWDICtx: pointer to the WLAN DAL context
9734 pEventData: pointer to the event information structure
9735
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 @see
9737 @return Result of the function call
9738*/
9739WDI_Status
9740WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009741(
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 WDI_ControlBlockType* pWDICtx,
9743 WDI_EventInfoType* pEventData
9744)
9745{
9746 WDI_DelTSReqParamsType* pwdiDelTSParams;
9747 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 wpt_uint16 usDataOffset = 0;
9752 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9755
9756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 -------------------------------------------------------------------------*/
9759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9760 ( NULL == pEventData->pCBfnc ))
9761 {
9762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 }
9767
9768 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9769 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9770
9771 /*-------------------------------------------------------------------------
9772 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 -------------------------------------------------------------------------*/
9775 wpalMutexAcquire(&pWDICtx->wptMutex);
9776
9777 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9781 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9782 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009783
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9787 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9788 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9789
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 }
9793
9794 /*------------------------------------------------------------------------
9795 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 ------------------------------------------------------------------------*/
9798 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9799 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9801 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9802 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009803
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 }
9808
9809
9810 wpalMutexRelease(&pWDICtx->wptMutex);
9811 /*-----------------------------------------------------------------------
9812 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9817 &pSendBuffer, &usDataOffset, &usSendSize))||
9818 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9819 {
9820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009821 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 }
9826
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 wpalMemoryCopy( pSendBuffer+usDataOffset,
9828 &pwdiDelTSParams->wdiDelTSInfo,
9829 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
9831 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833
9834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9838 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009839}/*WDI_ProcessDelTSpecReq*/
9840
9841/**
9842 @brief Process Update EDCA Params Request function (called when
9843 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009844
9845 @param pWDICtx: pointer to the WLAN DAL context
9846 pEventData: pointer to the event information structure
9847
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 @see
9849 @return Result of the function call
9850*/
9851WDI_Status
9852WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009853(
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 WDI_ControlBlockType* pWDICtx,
9855 WDI_EventInfoType* pEventData
9856)
9857{
9858 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9859 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 wpt_uint16 usDataOffset = 0;
9864 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9867
9868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -------------------------------------------------------------------------*/
9871 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9872 ( NULL == pEventData->pCBfnc ))
9873 {
9874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 }
9879
9880 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9881 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9882 /*-------------------------------------------------------------------------
9883 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 -------------------------------------------------------------------------*/
9886 wpalMutexAcquire(&pWDICtx->wptMutex);
9887
9888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9892 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9893 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009894
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 {
9897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9899 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009900
9901 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 }
9904
9905 /*------------------------------------------------------------------------
9906 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 ------------------------------------------------------------------------*/
9909 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9910 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9912 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9913 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009914
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 }
9919
9920
9921 wpalMutexRelease(&pWDICtx->wptMutex);
9922 /*-----------------------------------------------------------------------
9923 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9928 &pSendBuffer, &usDataOffset, &usSendSize))||
9929 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9930 {
9931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009932 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 }
9937
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 wpalMemoryCopy( pSendBuffer+usDataOffset,
9939 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9940 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009941
9942 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944
9945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9949 wdiUpdateEDCARspCb, pEventData->pUserData,
9950 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009951}/*WDI_ProcessUpdateEDCAParamsReq*/
9952
9953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009956
9957 @param pWDICtx: pointer to the WLAN DAL context
9958 pEventData: pointer to the event information structure
9959
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 @see
9961 @return Result of the function call
9962*/
9963WDI_Status
9964WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009965(
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 WDI_ControlBlockType* pWDICtx,
9967 WDI_EventInfoType* pEventData
9968)
9969{
9970 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9971 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 wpt_uint16 usDataOffset = 0;
9976 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 wpt_macAddr macBSSID;
9979
9980 tAddBASessionReqMsg halAddBASessionReq;
9981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9982
9983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 -------------------------------------------------------------------------*/
9986 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9987 ( NULL == pEventData->pCBfnc ))
9988 {
9989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009990 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 }
9994
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9999 /*-------------------------------------------------------------------------
10000 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 -------------------------------------------------------------------------*/
10003 wpalMutexAcquire(&pWDICtx->wptMutex);
10004
10005 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10009 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 &macBSSID))
10011 {
10012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010013 "This station does not exist in the WDI Station Table %d",
10014 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 }
10018
10019
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010021
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10025 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10026 __func__, MAC_ADDR_ARRAY(macBSSID));
10027
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 }
10031
10032 /*------------------------------------------------------------------------
10033 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 ------------------------------------------------------------------------*/
10036 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10037 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10039 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10040 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010041
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 }
10046
10047
10048 wpalMutexRelease(&pWDICtx->wptMutex);
10049 /*-----------------------------------------------------------------------
10050 Get message buffer
10051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10053 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 sizeof(halAddBASessionReq.addBASessionParams),
10055 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10058 {
10059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010060 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 }
10065
10066 halAddBASessionReq.addBASessionParams.staIdx =
10067 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10068 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10069 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10070 WDI_MAC_ADDR_LEN);
10071 halAddBASessionReq.addBASessionParams.baTID =
10072 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10073 halAddBASessionReq.addBASessionParams.baPolicy =
10074 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10075 halAddBASessionReq.addBASessionParams.baBufferSize =
10076 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10077 halAddBASessionReq.addBASessionParams.baTimeout =
10078 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10079 halAddBASessionReq.addBASessionParams.baSSN =
10080 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10081 halAddBASessionReq.addBASessionParams.baDirection =
10082 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10083
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 wpalMemoryCopy( pSendBuffer+usDataOffset,
10085 &halAddBASessionReq.addBASessionParams,
10086 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010087
10088 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010090
10091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10095 wdiAddBASessionRspCb, pEventData->pUserData,
10096 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010097}/*WDI_ProcessAddBASessionReq*/
10098
10099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010102
10103 @param pWDICtx: pointer to the WLAN DAL context
10104 pEventData: pointer to the event information structure
10105
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 @see
10107 @return Result of the function call
10108*/
10109WDI_Status
10110WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010111(
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_ControlBlockType* pWDICtx,
10113 WDI_EventInfoType* pEventData
10114)
10115{
10116 WDI_DelBAReqParamsType* pwdiDelBAParams;
10117 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 wpt_uint16 usDataOffset = 0;
10122 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 wpt_macAddr macBSSID;
10125 tDelBAParams halDelBAparam;
10126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10127
10128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 -------------------------------------------------------------------------*/
10131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10132 ( NULL == pEventData->pCBfnc ))
10133 {
10134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 }
10139
10140 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10141 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10142 /*-------------------------------------------------------------------------
10143 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 -------------------------------------------------------------------------*/
10146 wpalMutexAcquire(&pWDICtx->wptMutex);
10147
10148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010149 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10152 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 &macBSSID))
10154 {
10155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010156 "This station does not exist in the WDI Station Table %d",
10157 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 }
10161
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010163
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10167 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10168 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010169
10170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 }
10173
10174 /*------------------------------------------------------------------------
10175 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 ------------------------------------------------------------------------*/
10178 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10181 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10182 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010183
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
10189 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 sizeof(halDelBAparam),
10192 &pSendBuffer, &usDataOffset, &usSendSize))||
10193 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10194 {
10195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010196 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 }
10201
10202 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10203 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10204 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10205
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 wpalMemoryCopy( pSendBuffer+usDataOffset,
10207 &halDelBAparam,
10208 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010212
10213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10217 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010218}/*WDI_ProcessDelBAReq*/
10219
10220#ifdef FEATURE_WLAN_CCX
10221
10222WDI_Status
10223WDI_ProcessTSMStatsReq
10224(
10225 WDI_ControlBlockType* pWDICtx,
10226 WDI_EventInfoType* pEventData
10227)
10228{
10229 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10230 WDI_TsmRspCb wdiTSMRspCb;
10231 wpt_uint8 ucCurrentBSSSesIdx = 0;
10232 WDI_BSSSessionType* pBSSSes = NULL;
10233 wpt_uint8* pSendBuffer = NULL;
10234 wpt_uint16 usDataOffset = 0;
10235 wpt_uint16 usSendSize = 0;
10236 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10237 tTsmStatsParams halTsmStatsReqParams = {0};
10238
10239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10240
10241 /*-------------------------------------------------------------------------
10242 Sanity check
10243 -------------------------------------------------------------------------*/
10244 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10245 ( NULL == pEventData->pCBfnc ))
10246 {
10247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 WDI_ASSERT(0);
10250 return WDI_STATUS_E_FAILURE;
10251 }
10252
10253 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10254 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10255 /*-------------------------------------------------------------------------
10256 Check to see if we are in the middle of an association, if so queue, if
10257 not it means it is free to process request
10258 -------------------------------------------------------------------------*/
10259 wpalMutexAcquire(&pWDICtx->wptMutex);
10260
10261 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10262 if ( NULL == pBSSSes )
10263 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10265 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10266 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010267
10268 wpalMutexRelease(&pWDICtx->wptMutex);
10269 return WDI_STATUS_E_NOT_ALLOWED;
10270 }
10271
10272 /*------------------------------------------------------------------------
10273 Check if this BSS is being currently processed or queued,
10274 if queued - queue the new request as well
10275 ------------------------------------------------------------------------*/
10276 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10277 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda70234592014-02-03 18:15:54 -080010279 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010281
10282 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10283 wpalMutexRelease(&pWDICtx->wptMutex);
10284 return wdiStatus;
10285 }
10286
10287 wpalMutexRelease(&pWDICtx->wptMutex);
10288 /*-----------------------------------------------------------------------
10289 Get message buffer
10290 ! TO DO : proper conversion into the HAL Message Request Format
10291 -----------------------------------------------------------------------*/
10292 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10293 sizeof(halTsmStatsReqParams),
10294 &pSendBuffer, &usDataOffset, &usSendSize))||
10295 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10296 {
10297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010298 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 pEventData, pwdiTSMParams, wdiTSMRspCb);
10300 WDI_ASSERT(0);
10301 return WDI_STATUS_E_FAILURE;
10302 }
10303
10304 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10305 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10306 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10307 WDI_MAC_ADDR_LEN);
10308 wpalMemoryCopy( pSendBuffer+usDataOffset,
10309 &halTsmStatsReqParams,
10310 sizeof(halTsmStatsReqParams));
10311
10312 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10313 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10314
10315 /*-------------------------------------------------------------------------
10316 Send TSM Stats Request to HAL
10317 -------------------------------------------------------------------------*/
10318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10319 wdiTSMRspCb, pEventData->pUserData,
10320 WDI_TSM_STATS_RESP);
10321}/*WDI_ProcessTSMStatsReq*/
10322
10323#endif
10324
10325
10326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010329
10330 @param pWDICtx: pointer to the WLAN DAL context
10331 pEventData: pointer to the event information structure
10332
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 @see
10334 @return Result of the function call
10335*/
10336WDI_Status
10337WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010338(
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 WDI_ControlBlockType* pWDICtx,
10340 WDI_EventInfoType* pEventData
10341)
10342{
10343 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10344 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpt_uint16 usDataOffset = 0;
10347 wpt_uint16 usSendSize = 0;
10348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10349
10350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 -------------------------------------------------------------------------*/
10353 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10354 ( NULL == pEventData->pCBfnc ))
10355 {
10356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 }
10361
10362 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10363 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10364 /*-----------------------------------------------------------------------
10365 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10370 &pSendBuffer, &usDataOffset, &usSendSize))||
10371 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10372 {
10373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010374 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 }
10379
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 wpalMemoryCopy( pSendBuffer+usDataOffset,
10381 &pwdiFlushAcParams->wdiFlushAcInfo,
10382 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010383
10384 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10391 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010392}/*WDI_ProcessFlushAcReq*/
10393
10394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010397
10398 @param pWDICtx: pointer to the WLAN DAL context
10399 pEventData: pointer to the event information structure
10400
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 @see
10402 @return Result of the function call
10403*/
10404WDI_Status
10405WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010406(
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 WDI_ControlBlockType* pWDICtx,
10408 WDI_EventInfoType* pEventData
10409)
10410{
10411 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10412 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 wpt_uint16 usDataOffset = 0;
10415 wpt_uint16 usSendSize = 0;
10416
10417 tBtAmpEventMsg haltBtAmpEventMsg;
10418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10419
10420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 -------------------------------------------------------------------------*/
10423 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10424 ( NULL == pEventData->pCBfnc ))
10425 {
10426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 }
10431
10432 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10433 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10434 /*-----------------------------------------------------------------------
10435 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10440 &pSendBuffer, &usDataOffset, &usSendSize))||
10441 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10442 {
10443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010444 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 }
10449
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 wpalMemoryCopy( pSendBuffer+usDataOffset,
10453 &haltBtAmpEventMsg.btAmpEventParams,
10454 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010455
10456 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010457 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010458
10459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10463 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010464}/*WDI_ProcessBtAmpEventReq*/
10465
10466/**
10467 @brief Process Add STA self Request function (called when Main FSM
10468 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010469
10470 @param pWDICtx: pointer to the WLAN DAL context
10471 pEventData: pointer to the event information structure
10472
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 @see
10474 @return Result of the function call
10475*/
10476WDI_Status
10477WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010478(
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 WDI_ControlBlockType* pWDICtx,
10480 WDI_EventInfoType* pEventData
10481)
10482{
10483 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10484 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 wpt_uint16 usDataOffset = 0;
10487 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010488 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10490
10491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 -------------------------------------------------------------------------*/
10494 if (( NULL == pEventData ) ||
10495 ( NULL == pEventData->pEventData) ||
10496 ( NULL == pEventData->pCBfnc))
10497 {
10498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 }
10503
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10508 /*-----------------------------------------------------------------------
10509 Get message buffer
10510 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10512 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010513 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010515 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 {
10517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010518 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 }
10523
10524 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10527
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010529 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10530 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10531 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10532 {
10533 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10534 }
10535 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10536 VOS_P2P_CLIENT_MODE) ||
10537 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10538 VOS_P2P_DEVICE))
10539 {
10540 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10541 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010543 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
10545 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010547
10548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10552 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10553 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010554}/*WDI_ProcessAddSTASelfReq*/
10555
10556
10557
10558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010561
10562 @param pWDICtx: pointer to the WLAN DAL context
10563 pEventData: pointer to the event information structure
10564
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 @see
10566 @return Result of the function call
10567*/
10568WDI_Status
10569WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010570(
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 WDI_ControlBlockType* pWDICtx,
10572 WDI_EventInfoType* pEventData
10573)
10574{
10575 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10576 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 wpt_uint16 usDataOffset = 0;
10579 wpt_uint16 usSendSize = 0;
10580 tDelStaSelfParams halSetDelSelfSTAParams;
10581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10582
10583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 -------------------------------------------------------------------------*/
10586 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10587 ( NULL == pEventData->pCBfnc ))
10588 {
10589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 }
10594
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10597 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10598
10599 /*-----------------------------------------------------------------------
10600 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10605 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10608 {
10609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010610 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 }
10615
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10618
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10620 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010621
10622 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010624
10625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10629 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 WDI_DEL_STA_SELF_RESP);
10631
10632}
10633
Jeff Johnsone7245742012-09-05 17:12:55 -070010634#ifdef FEATURE_OEM_DATA_SUPPORT
10635/**
10636 @brief Process Start Oem Data Request function (called when Main
10637 FSM allows it)
10638
10639 @param pWDICtx: pointer to the WLAN DAL context
10640 pEventData: pointer to the event information structure
10641
10642 @see
10643 @return Result of the function call
10644*/
10645WDI_Status
10646WDI_ProcessStartOemDataReq
10647(
10648 WDI_ControlBlockType* pWDICtx,
10649 WDI_EventInfoType* pEventData
10650)
10651{
10652 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10653 WDI_oemDataRspCb wdiOemDataRspCb;
10654 wpt_uint8* pSendBuffer = NULL;
10655 wpt_uint16 usDataOffset = 0;
10656 wpt_uint16 usSendSize = 0;
10657 wpt_uint16 reqLen;
10658 tStartOemDataReqParams* halStartOemDataReqParams;
10659
10660 /*-------------------------------------------------------------------------
10661 Sanity check
10662 -------------------------------------------------------------------------*/
10663 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10664 ( NULL == pEventData->pCBfnc ))
10665 {
10666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010667 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 WDI_ASSERT(0);
10669 return WDI_STATUS_E_FAILURE;
10670 }
10671
10672 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10673 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10674
10675 /*-----------------------------------------------------------------------
10676 Get message buffer
10677 -----------------------------------------------------------------------*/
10678
10679 reqLen = sizeof(tStartOemDataReqParams);
10680
10681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10682 WDI_START_OEM_DATA_REQ, reqLen,
10683 &pSendBuffer, &usDataOffset, &usSendSize))||
10684 (usSendSize < (usDataOffset + reqLen)))
10685 {
10686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010687 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10689 WDI_ASSERT(0);
10690 return WDI_STATUS_E_FAILURE;
10691 }
10692
10693 //copying WDI OEM DATA REQ PARAMS to shared memory
10694 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10695
10696 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10697 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10698
10699 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10700 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10701
10702 /*-------------------------------------------------------------------------
10703 Send Start Request to HAL
10704 -------------------------------------------------------------------------*/
10705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10706 wdiOemDataRspCb, pEventData->pUserData,
10707 WDI_START_OEM_DATA_RESP);
10708}/*WDI_ProcessStartOemDataReq*/
10709#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010710
10711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010714
10715 @param pWDICtx: pointer to the WLAN DAL context
10716 pEventData: pointer to the event information structure
10717
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 @see
10719 @return Result of the function call
10720*/
10721WDI_Status
10722WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010723(
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 WDI_ControlBlockType* pWDICtx,
10725 WDI_EventInfoType* pEventData
10726)
10727{
10728 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10729 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 wpt_uint16 usDataOffset = 0;
10732 wpt_uint16 usSendSize = 0;
10733 tHalWlanHostResumeReqParam halResumeReqParams;
10734
10735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10736
10737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 -------------------------------------------------------------------------*/
10740 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10741 ( NULL == pEventData->pCBfnc ))
10742 {
10743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010744 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 }
10748
10749 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10750 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10751
10752 /*-----------------------------------------------------------------------
10753 Get message buffer
10754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10757 &pSendBuffer, &usDataOffset, &usSendSize))||
10758 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10759 {
10760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010761 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 }
10766
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010769
10770 wpalMemoryCopy( pSendBuffer+usDataOffset,
10771 &halResumeReqParams,
10772 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010773
10774 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
10777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10781 wdiHostResumeRspCb, pEventData->pUserData,
10782 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010783}/*WDI_ProcessHostResumeReq*/
10784
10785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010788
10789 @param pWDICtx: pointer to the WLAN DAL context
10790 pEventData: pointer to the event information structure
10791
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 @see
10793 @return Result of the function call
10794*/
10795WDI_Status
10796WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010797(
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 WDI_ControlBlockType* pWDICtx,
10799 WDI_EventInfoType* pEventData
10800)
10801{
10802 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10803 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 wpt_uint16 usDataOffset = 0;
10806 wpt_uint16 usSendSize = 0;
10807 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10809
10810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 -------------------------------------------------------------------------*/
10813 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10814 ( NULL == pEventData->pCBfnc ))
10815 {
10816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010817 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10823 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010824
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 /*-----------------------------------------------------------------------
10826 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 sizeof(halTxPerTrackingReqParam),
10831 &pSendBuffer, &usDataOffset, &usSendSize))||
10832 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10833 {
10834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010835 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010840
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10842 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10843 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10844 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010845
10846 wpalMemoryCopy( pSendBuffer+usDataOffset,
10847 &halTxPerTrackingReqParam,
10848 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010849
10850 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010852
10853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10857 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010858}/*WDI_ProcessSetTxPerTrackingReq*/
10859
10860/*=========================================================================
10861 Indications
10862=========================================================================*/
10863
10864/**
10865 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010866
10867 @param pWDICtx: pointer to the WLAN DAL context
10868 pEventData: pointer to the event information structure
10869
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 @see
10871 @return Result of the function call
10872*/
10873WDI_Status
10874WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010875(
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 WDI_ControlBlockType* pWDICtx,
10877 WDI_EventInfoType* pEventData
10878)
10879{
10880 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 wpt_uint16 usDataOffset = 0;
10883 wpt_uint16 usSendSize = 0;
10884 WDI_Status wdiStatus;
10885 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10887
10888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 -------------------------------------------------------------------------*/
10891 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10892 {
10893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010894 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 }
10898
10899 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10900
10901 /*-----------------------------------------------------------------------
10902 Get message buffer
10903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10905 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 sizeof(halWlanSuspendIndparams),
10907 &pSendBuffer, &usDataOffset, &usSendSize))||
10908 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10909 {
10910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10911 "Unable to get send buffer in Suspend Ind ");
10912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
10916 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10917 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10918
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010920 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010921
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10923 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010924
10925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 -------------------------------------------------------------------------*/
10928 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010930
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10933}/*WDI_ProcessHostSuspendInd*/
10934
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010935
10936
10937/**
10938 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10939
10940 @param pWDICtx: pointer to the WLAN DAL context
10941 pEventData: pointer to the event information structure
10942
10943 @see
10944 @return Result of the function call
10945*/
10946WDI_Status
10947WDI_ProcessTrafficStatsInd
10948(
10949 WDI_ControlBlockType* pWDICtx,
10950 WDI_EventInfoType* pEventData
10951)
10952{
10953 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10954 wpt_uint8* pSendBuffer = NULL;
10955 wpt_uint16 usDataOffset = 0;
10956 wpt_uint16 usSendSize = 0;
10957 WDI_Status wdiStatus;
10958 tStatsClassBIndParams* pStatsClassBIndParams;
10959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10960
10961 /*-------------------------------------------------------------------------
10962 Sanity check
10963 -------------------------------------------------------------------------*/
10964 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10965 {
10966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10967 "%s: Invalid parameters in Traffic Stats ind",__func__);
10968 WDI_ASSERT(0);
10969 return WDI_STATUS_E_FAILURE;
10970 }
10971
10972 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10973
10974 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10975 {
10976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10977 "%s: Invalid parameters in Traffic Stats ind",__func__);
10978 WDI_ASSERT(0);
10979 return WDI_STATUS_E_FAILURE;
10980 }
10981
10982 /*-----------------------------------------------------------------------
10983 Get message buffer
10984 -----------------------------------------------------------------------*/
10985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10986 WDI_TRAFFIC_STATS_IND,
10987 sizeof(tStatsClassBIndParams),
10988 &pSendBuffer, &usDataOffset, &usSendSize))||
10989 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10992 "Unable to get send buffer in Traffic Stats Ind ");
10993 WDI_ASSERT(0);
10994 return WDI_STATUS_E_FAILURE;
10995 }
10996
10997 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10998
10999 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11000
11001 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11002 pTrafficStatsIndParams->pTrafficStats,
11003 pTrafficStatsIndParams->length);
11004
11005 /*-------------------------------------------------------------------------
11006 Send Suspend Request to HAL
11007 -------------------------------------------------------------------------*/
11008 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11009 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11010
11011 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11012 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11013}/*WDI_ProcessTrafficStatsInd*/
11014
Chet Lanctota96bb432013-03-18 10:26:30 -070011015#ifdef WLAN_FEATURE_11W
11016/**
11017 @brief Process Exclude Unencrypted Indications function (called
11018 when Main FSM allows it)
11019
11020 @param pWDICtx: pointer to the WLAN DAL context
11021 pEventData: pointer to the event information structure
11022
11023 @see
11024 @return Result of the function call
11025*/
11026WDI_Status
11027WDI_ProcessExcludeUnencryptInd
11028(
11029 WDI_ControlBlockType* pWDICtx,
11030 WDI_EventInfoType* pEventData
11031)
11032{
11033 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11034 wpt_uint8* pSendBuffer = NULL;
11035 wpt_uint16 usDataOffset = 0;
11036 wpt_uint16 usSendSize = 0;
11037 WDI_Status wdiStatus;
11038 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040
11041 /*-------------------------------------------------------------------------
11042 Sanity check
11043 -------------------------------------------------------------------------*/
11044 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11047 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11048 WDI_ASSERT(0);
11049 return WDI_STATUS_E_FAILURE;
11050 }
11051
11052 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11053
11054 /*-----------------------------------------------------------------------
11055 Get message buffer
11056 -----------------------------------------------------------------------*/
11057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11058 WDI_EXCLUDE_UNENCRYPTED_IND,
11059 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11060 &pSendBuffer, &usDataOffset, &usSendSize))||
11061 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11062 {
11063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11064 "Unable to get send buffer in Exclude Unencrypted Ind ");
11065 WDI_ASSERT(0);
11066 return WDI_STATUS_E_FAILURE;
11067 }
11068
11069 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11070
11071 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11072
11073 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11074 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11075
11076 /*-------------------------------------------------------------------------
11077 Send Suspend Request to HAL
11078 -------------------------------------------------------------------------*/
11079 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11080 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11081
11082 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11083 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11084}/*WDI_ProcessExcludeUnencryptInd*/
11085#endif
11086
Yue Ma365933a2013-08-14 15:59:08 -070011087/**
11088 @brief Process Add Periodic Tx Pattern Indication function (called when
11089 Main FSM allows it)
11090
11091 @param pWDICtx: pointer to the WLAN DAL context
11092 pEventData: pointer to the event information structure
11093
11094 @see
11095 @return Result of the function call
11096*/
11097WDI_Status
11098WDI_ProcessAddPeriodicTxPtrnInd
11099(
11100 WDI_ControlBlockType* pWDICtx,
11101 WDI_EventInfoType* pEventData
11102)
11103{
11104 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11105 wpt_uint8* pSendBuffer = NULL;
11106 wpt_uint16 usDataOffset = 0;
11107 wpt_uint16 usSendSize = 0;
11108 WDI_Status wdiStatus;
11109 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11110 wpt_uint8 selfStaIdx = 0;
11111
11112 /*-------------------------------------------------------------------------
11113 Sanity check
11114 -------------------------------------------------------------------------*/
11115 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11116 {
11117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11118 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11119 WDI_ASSERT(0);
11120 return WDI_STATUS_E_FAILURE;
11121 }
11122
11123 pAddPeriodicTxPtrnParams =
11124 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11125
11126 /*------------------------------------------------------------------------
11127 Get message buffer
11128 ------------------------------------------------------------------------*/
11129 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11130 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11131 &pSendBuffer, &usDataOffset, &usSendSize))||
11132 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11133 {
11134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11135 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11136 __func__);
11137 WDI_ASSERT(0);
11138 return WDI_STATUS_E_FAILURE;
11139 }
11140
11141 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11142
11143 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11144 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11145 &selfStaIdx))
11146 {
11147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11148 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011149 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011150
11151 return WDI_STATUS_E_FAILURE;
11152 }
11153
11154 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11155 halAddPeriodicTxPtrn->ucPtrnId =
11156 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11157 halAddPeriodicTxPtrn->usPtrnSize =
11158 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11159 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11160 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11161
11162 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11163 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11164 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11165
11166 /*-------------------------------------------------------------------------
11167 Send Indication to HAL
11168 -------------------------------------------------------------------------*/
11169 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11170 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11171
11172 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11173
11174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11175 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11176
11177 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11178} /* WDI_ProcessAddPeriodicTxPtrnInd */
11179
11180/**
11181 @brief Process Delete Periodic Tx Pattern Indication function (called when
11182 Main FSM allows it)
11183
11184 @param pWDICtx: pointer to the WLAN DAL context
11185 pEventData: pointer to the event information structure
11186
11187 @see
11188 @return Result of the function call
11189*/
11190WDI_Status
11191WDI_ProcessDelPeriodicTxPtrnInd
11192(
11193 WDI_ControlBlockType* pWDICtx,
11194 WDI_EventInfoType* pEventData
11195)
11196{
11197 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11198 wpt_uint8* pSendBuffer = NULL;
11199 wpt_uint16 usDataOffset = 0;
11200 wpt_uint16 usSendSize = 0;
11201 WDI_Status wdiStatus;
11202 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11203 wpt_uint8 selfStaIdx = 0;
11204
11205 /*-------------------------------------------------------------------------
11206 Sanity check
11207 -------------------------------------------------------------------------*/
11208 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11209 {
11210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11211 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11212 WDI_ASSERT(0);
11213 return WDI_STATUS_E_FAILURE;
11214 }
11215
11216 pDelPeriodicTxPtrnParams =
11217 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11218
11219 /*------------------------------------------------------------------------
11220 Get message buffer
11221 ------------------------------------------------------------------------*/
11222 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11223 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11224 &pSendBuffer, &usDataOffset, &usSendSize))||
11225 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11226 {
11227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11228 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11229 __func__);
11230 WDI_ASSERT(0);
11231 return WDI_STATUS_E_FAILURE;
11232 }
11233
11234 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11235
11236 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11237 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11238 &selfStaIdx))
11239 {
11240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11241 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011242 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011243
11244 return WDI_STATUS_E_FAILURE;
11245 }
11246
11247 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11248 halDelPeriodicTxPtrn->uPatternIdBitmap =
11249 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11250
11251 /*-------------------------------------------------------------------------
11252 Send Indication to HAL
11253 -------------------------------------------------------------------------*/
11254 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11255 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11256
11257 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11258
11259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11260 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11261
11262 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11263} /* WDI_ProcessDelPeriodicTxPtrnInd */
11264
Jeff Johnson295189b2012-06-20 16:38:30 -070011265/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011267==========================================================================*/
11268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011270 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011271
11272 @param pWDICtx: pointer to the WLAN DAL context
11273 pEventData: pointer to the event information structure
11274
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 @see
11276 @return Result of the function call
11277*/
11278WDI_Status
11279WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011280(
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 WDI_ControlBlockType* pWDICtx,
11282 WDI_EventInfoType* pEventData
11283)
11284{
11285 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11286 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011288 wpt_uint16 usDataOffset = 0;
11289 wpt_uint16 usSendSize = 0;
11290 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11292
11293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 -------------------------------------------------------------------------*/
11296 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11297 ( NULL == pEventData->pCBfnc ))
11298 {
11299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 }
11304
11305 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11306 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11307 /*-----------------------------------------------------------------------
11308 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 sizeof(halSwitchChannelReq.switchChannelParams),
11313 &pSendBuffer, &usDataOffset, &usSendSize))||
11314 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11315 {
11316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011317 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 }
11322
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011325#ifndef WLAN_FEATURE_VOWIFI
11326 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11328#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11331
11332#ifdef WLAN_FEATURE_VOWIFI
11333 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11336 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11337 WDI_MAC_ADDR_LEN);
11338 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11339 pwdiSwitchChParams->wdiChInfo.macBSSId,
11340 WDI_MAC_ADDR_LEN);
11341#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 wpalMemoryCopy( pSendBuffer+usDataOffset,
11343 &halSwitchChannelReq.switchChannelParams,
11344 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011345
11346 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011348
11349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11353 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011354}/*WDI_ProcessChannelSwitchReq*/
11355
11356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011359
11360 @param pWDICtx: pointer to the WLAN DAL context
11361 pEventData: pointer to the event information structure
11362
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 @see
11364 @return Result of the function call
11365*/
11366WDI_Status
11367WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011368(
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 WDI_ControlBlockType* pWDICtx,
11370 WDI_EventInfoType* pEventData
11371)
11372{
11373 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11374 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 wpt_uint16 usDataOffset = 0;
11379 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011380 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011381
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 tConfigStaReqMsg halConfigStaReqMsg;
11383 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11385
11386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 -------------------------------------------------------------------------*/
11389 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11390 ( NULL == pEventData->pCBfnc ))
11391 {
11392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 }
11397
11398 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11399 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11400 /*-------------------------------------------------------------------------
11401 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 -------------------------------------------------------------------------*/
11404 wpalMutexAcquire(&pWDICtx->wptMutex);
11405
11406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11410 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11411 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011412
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11416 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11417 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 }
11422
11423 /*------------------------------------------------------------------------
11424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 ------------------------------------------------------------------------*/
11427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11430 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11431 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011432
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 }
11437
11438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011439
11440 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11441#ifdef WLAN_FEATURE_11AC
11442 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011443 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 else
11445#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011446 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011447
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 /*-----------------------------------------------------------------------
11449 Get message buffer
11450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11452 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 {
11456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011457 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 }
11462
11463 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 &pwdiConfigSTAParams->wdiReqInfo);
11466
11467 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11468 {
11469 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 WDI_STATableFindStaidByAddr(pWDICtx,
11472 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 {
11475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011476 MAC_ADDRESS_STR
11477 ": This station does not exist in the WDI Station Table",
11478 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011480 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 }
11483 }
11484 else
11485 {
11486 /* Need to fill in the STA Index to invalid, since at this point we have not
11487 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011488 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 }
11490
11491 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011493
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 wpalMemoryCopy( pSendBuffer+usDataOffset,
11495 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011496 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011497
11498 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011499 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011500
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11502 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 sizeof(pWDICtx->wdiCachedConfigStaReq));
11504
11505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11509 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011510}/*WDI_ProcessConfigStaReq*/
11511
11512
11513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011516
11517 @param pWDICtx: pointer to the WLAN DAL context
11518 pEventData: pointer to the event information structure
11519
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 @see
11521 @return Result of the function call
11522*/
11523WDI_Status
11524WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011525(
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 WDI_ControlBlockType* pWDICtx,
11527 WDI_EventInfoType* pEventData
11528)
11529{
11530 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11531 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 wpt_uint16 usDataOffset = 0;
11536 wpt_uint16 usSendSize = 0;
11537 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11540
11541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 -------------------------------------------------------------------------*/
11544 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11545 ( NULL == pEventData->pCBfnc ))
11546 {
11547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 }
11552
11553 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11554 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11555 /*-------------------------------------------------------------------------
11556 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 -------------------------------------------------------------------------*/
11559 wpalMutexAcquire(&pWDICtx->wptMutex);
11560
11561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11565 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11566 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011567
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11572 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 }
11574 else
11575 {
11576 /*------------------------------------------------------------------------
11577 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 ------------------------------------------------------------------------*/
11580 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11581 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11583 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11584 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11585
11586 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 }
11590 }
11591 /* If the link is set to enter IDLE - the Session allocated for this BSS
11592 will be deleted on the Set Link State response coming from HAL
11593 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11596
11597 wpalMutexRelease(&pWDICtx->wptMutex);
11598 /*-----------------------------------------------------------------------
11599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011602
11603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 sizeof(halLinkStateReqMsg),
11605 &pSendBuffer, &usDataOffset, &usSendSize))||
11606 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11607 {
11608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011609 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 }
11614
11615 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11616 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11617
11618 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11619 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11620
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11623
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 wpalMemoryCopy( pSendBuffer+usDataOffset,
11625 &halLinkStateReqMsg,
11626 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011627
11628 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011630
11631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11635 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011636}/*WDI_ProcessSetLinkStateReq*/
11637
11638
11639/**
11640 @brief Process Get Stats Request function (called when Main FSM
11641 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011642
11643 @param pWDICtx: pointer to the WLAN DAL context
11644 pEventData: pointer to the event information structure
11645
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 @see
11647 @return Result of the function call
11648*/
11649WDI_Status
11650WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011651(
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 WDI_ControlBlockType* pWDICtx,
11653 WDI_EventInfoType* pEventData
11654)
11655{
11656 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11657 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 wpt_uint16 usDataOffset = 0;
11660 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 WDI_BSSSessionType* pBSSSes = NULL;
11663 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 tHalStatsReqMsg halStatsReqMsg;
11666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11667
11668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 -------------------------------------------------------------------------*/
11671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11672 ( NULL == pEventData->pCBfnc ) )
11673 {
11674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 }
11679
11680 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11681 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11682
11683 /*-------------------------------------------------------------------------
11684 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011686 -------------------------------------------------------------------------*/
11687 wpalMutexAcquire(&pWDICtx->wptMutex);
11688
11689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11693 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 &macBSSID))
11695 {
11696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011697 "This station does not exist in the WDI Station Table %d",
11698 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 }
11702
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11704 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11707 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11708 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011709
11710 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 }
11713
11714 /*------------------------------------------------------------------------
11715 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 ------------------------------------------------------------------------*/
11718 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11719 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11721 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11722 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011723
Jeff Johnsone7245742012-09-05 17:12:55 -070011724 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 }
11728
11729
11730 wpalMutexRelease(&pWDICtx->wptMutex);
11731
11732 /*-----------------------------------------------------------------------
11733 Get message buffer
11734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 sizeof(halStatsReqMsg.statsReqParams),
11737 &pSendBuffer, &usDataOffset, &usSendSize))||
11738 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11739 {
11740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011741 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 }
11746
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 wpalMemoryCopy( pSendBuffer+usDataOffset,
11752 &halStatsReqMsg.statsReqParams,
11753 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011754
11755 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011756 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011757
11758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11762 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011763}/*WDI_ProcessGetStatsReq*/
11764
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011765#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11766/**
11767 @brief Process Get Roam Rssi Request function (called when Main FSM
11768 allows it)
11769
11770 @param pWDICtx: pointer to the WLAN DAL context
11771 pEventData: pointer to the event information structure
11772
11773 @see
11774 @return Result of the function call
11775*/
11776WDI_Status
11777WDI_ProcessGetRoamRssiReq
11778(
11779 WDI_ControlBlockType* pWDICtx,
11780 WDI_EventInfoType* pEventData
11781)
11782{
11783 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11784 WDI_GetStatsRspCb wdiGetStatsRspCb;
11785 wpt_uint8* pSendBuffer = NULL;
11786 wpt_uint16 usDataOffset = 0;
11787 wpt_uint16 usSendSize = 0;
11788 wpt_uint8 ucCurrentBSSSesIdx = 0;
11789 WDI_BSSSessionType* pBSSSes = NULL;
11790 wpt_macAddr macBSSID;
11791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11792 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11794 /*-------------------------------------------------------------------------
11795 Sanity check
11796 -------------------------------------------------------------------------*/
11797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11798 ( NULL == pEventData->pCBfnc ) )
11799 {
11800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11801 "%s: Invalid parameters", __func__);
11802 WDI_ASSERT(0);
11803 return WDI_STATUS_E_FAILURE;
11804 }
11805
11806 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11807 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11808
11809 /*-------------------------------------------------------------------------
11810 Check to see if we are in the middle of an association, if so queue, if
11811 not it means it is free to process request
11812 -------------------------------------------------------------------------*/
11813 wpalMutexAcquire(&pWDICtx->wptMutex);
11814
11815 /*------------------------------------------------------------------------
11816 Find the BSS for which the request is made
11817 ------------------------------------------------------------------------*/
11818 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11819 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11820 &macBSSID))
11821 {
11822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011823 "This station does not exist in the WDI Station Table %d",
11824 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011825 wpalMutexRelease(&pWDICtx->wptMutex);
11826 return WDI_STATUS_E_FAILURE;
11827 }
11828
11829 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11830 if ( NULL == pBSSSes )
11831 {
11832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11833 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11834 __func__, MAC_ADDR_ARRAY(macBSSID));
11835
11836 wpalMutexRelease(&pWDICtx->wptMutex);
11837 return WDI_STATUS_E_NOT_ALLOWED;
11838 }
11839
11840 /*------------------------------------------------------------------------
11841 Check if this BSS is being currently processed or queued,
11842 if queued - queue the new request as well
11843 ------------------------------------------------------------------------*/
11844 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11845 {
11846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11847 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11848 __func__, MAC_ADDR_ARRAY(macBSSID));
11849
11850 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11851 wpalMutexRelease(&pWDICtx->wptMutex);
11852 return wdiStatus;
11853 }
11854
11855 wpalMutexRelease(&pWDICtx->wptMutex);
11856
11857 /*-----------------------------------------------------------------------
11858 Get message buffer
11859 -----------------------------------------------------------------------*/
11860 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11861 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11862 &pSendBuffer, &usDataOffset, &usSendSize))||
11863 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11864 {
11865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011866 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011867 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11868 WDI_ASSERT(0);
11869 return WDI_STATUS_E_FAILURE;
11870 }
11871
11872 halRssiRoamReqMsg.roamRssiReqParams.staId =
11873 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11874 wpalMemoryCopy( pSendBuffer+usDataOffset,
11875 &halRssiRoamReqMsg.roamRssiReqParams,
11876 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11877
11878 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11879 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11880
11881 /*-------------------------------------------------------------------------
11882 Send Get STA Request to HAL
11883 -------------------------------------------------------------------------*/
11884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11885 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11886}/*WDI_ProcessGetRoamRssiReq*/
11887#endif
11888
Jeff Johnson295189b2012-06-20 16:38:30 -070011889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011892
11893 @param pWDICtx: pointer to the WLAN DAL context
11894 pEventData: pointer to the event information structure
11895
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 @see
11897 @return Result of the function call
11898*/
11899WDI_Status
11900WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011901(
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 WDI_ControlBlockType* pWDICtx,
11903 WDI_EventInfoType* pEventData
11904)
11905{
11906 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11907 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11908
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 wpt_uint16 usDataOffset = 0;
11911 wpt_uint16 usSendSize = 0;
11912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11913
11914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 -------------------------------------------------------------------------*/
11917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11918 ( NULL == pEventData->pCBfnc))
11919 {
11920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 }
11925
11926 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11927 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11928
11929 /*-----------------------------------------------------------------------
11930 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 -----------------------------------------------------------------------*/
11933
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11936 &pSendBuffer, &usDataOffset, &usSendSize))||
11937 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11938 {
11939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011940 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 }
11945
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 wpalMemoryCopy( pSendBuffer+usDataOffset,
11947 &pwdiUpdateCfgParams->uConfigBufferLen,
11948 sizeof(wpt_uint32));
11949 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11950 pwdiUpdateCfgParams->pConfigBuffer,
11951 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011952
11953 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011955
11956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 -------------------------------------------------------------------------*/
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11961 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011962
11963}/*WDI_ProcessUpdateCfgReq*/
11964
11965
11966/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011969
11970 @param pWDICtx: pointer to the WLAN DAL context
11971 pEventData: pointer to the event information structure
11972
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 @see
11974 @return Result of the function call
11975*/
11976WDI_Status
11977WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011978(
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 WDI_ControlBlockType* pWDICtx,
11980 WDI_EventInfoType* pEventData
11981)
11982{
11983 WDI_AddBAReqParamsType* pwdiAddBAParams;
11984 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 wpt_uint16 usDataOffset = 0;
11989 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 wpt_macAddr macBSSID;
11992
11993 tAddBAReqMsg halAddBAReq;
11994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11995
11996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 -------------------------------------------------------------------------*/
11999 if (( NULL == pEventData ) ||
12000 ( NULL == pEventData->pEventData) ||
12001 ( NULL == pEventData->pCBfnc ))
12002 {
12003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 }
12008
12009 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12010 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12011
12012 /*-------------------------------------------------------------------------
12013 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -------------------------------------------------------------------------*/
12016 wpalMutexAcquire(&pWDICtx->wptMutex);
12017
12018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012020 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12022 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 &macBSSID))
12024 {
12025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012026 "This station does not exist in the WDI Station Table %d",
12027 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 }
12031
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12033 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12036 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12037 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012038
12039 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 }
12042
12043 /*------------------------------------------------------------------------
12044 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 ------------------------------------------------------------------------*/
12047 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12050 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12051 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012052
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 }
12057
12058
12059 wpalMutexRelease(&pWDICtx->wptMutex);
12060 /*-----------------------------------------------------------------------
12061 Get message buffer
12062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 sizeof(halAddBAReq.addBAParams),
12065 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12068 {
12069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012070 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012074 }
12075
Jeff Johnsone7245742012-09-05 17:12:55 -070012076 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12078 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12079#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12082#endif
12083
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 wpalMemoryCopy( pSendBuffer+usDataOffset,
12085 &halAddBAReq.addBAParams,
12086 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012087
12088 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012090
12091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12095 wdiAddBARspCb, pEventData->pUserData,
12096 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012097}/*WDI_ProcessAddBAReq*/
12098
12099
12100
12101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012104
12105 @param pWDICtx: pointer to the WLAN DAL context
12106 pEventData: pointer to the event information structure
12107
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 @see
12109 @return Result of the function call
12110*/
12111WDI_Status
12112WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012113(
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 WDI_ControlBlockType* pWDICtx,
12115 WDI_EventInfoType* pEventData
12116)
12117{
12118 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12119 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 wpt_uint16 usDataOffset = 0;
12124 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 wpt_uint16 index;
12127 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012128
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 tTriggerBAReqMsg halTriggerBAReq;
12130 tTriggerBaReqCandidate* halTriggerBACandidate;
12131 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12133
12134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 -------------------------------------------------------------------------*/
12137 if (( NULL == pEventData ) ||
12138 ( NULL == pEventData->pEventData ) ||
12139 ( NULL == pEventData->pCBfnc ))
12140 {
12141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 }
12146
12147 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12148 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12149 /*-------------------------------------------------------------------------
12150 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 -------------------------------------------------------------------------*/
12153 wpalMutexAcquire(&pWDICtx->wptMutex);
12154
12155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12159 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 &macBSSID))
12161 {
12162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012163 "This station does not exist in the WDI Station Table %d",
12164 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 }
12168
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12170 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12173 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12174 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012175
12176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 }
12179
12180 /*------------------------------------------------------------------------
12181 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 ------------------------------------------------------------------------*/
12184 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12185 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12187 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012189
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 }
12194
12195
12196 wpalMutexRelease(&pWDICtx->wptMutex);
12197 /*-----------------------------------------------------------------------
12198 Get message buffer
12199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12201 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12205 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12210 {
12211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012212 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 }
12217
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12222
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 wpalMemoryCopy( pSendBuffer+usDataOffset,
12224 &halTriggerBAReq.triggerBAParams,
12225 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012226
Jeff Johnsone7245742012-09-05 17:12:55 -070012227 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12229 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12230 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012231
12232 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 index++)
12234 {
12235 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12236 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12237 halTriggerBACandidate++;
12238 wdiTriggerBACandidate++;
12239 }
12240
12241 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012243
12244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12248 wdiTriggerBARspCb, pEventData->pUserData,
12249 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012250}/*WDI_ProcessTriggerBAReq*/
12251
12252
12253
12254/**
12255 @brief Process Update Beacon Params Request function (called when Main FSM
12256 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012257
12258 @param pWDICtx: pointer to the WLAN DAL context
12259 pEventData: pointer to the event information structure
12260
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 @see
12262 @return Result of the function call
12263*/
12264WDI_Status
12265WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012266(
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 WDI_ControlBlockType* pWDICtx,
12268 WDI_EventInfoType* pEventData
12269)
12270{
12271 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12272 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 wpt_uint16 usDataOffset = 0;
12275 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12278
12279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 -------------------------------------------------------------------------*/
12282 if (( NULL == pEventData ) ||
12283 ( NULL == pEventData->pEventData) ||
12284 ( NULL == pEventData->pCBfnc))
12285 {
12286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 }
12291
12292 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12293 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12294 /*-----------------------------------------------------------------------
12295 Get message buffer
12296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 sizeof(halUpdateBeaconParams),
12299 &pSendBuffer, &usDataOffset, &usSendSize))||
12300 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12301 {
12302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012303 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012307 }
12308
12309 /*BSS Index of the BSS*/
12310 halUpdateBeaconParams.bssIdx =
12311 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12312 /*shortPreamble mode. HAL should update all the STA rates when it
12313 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12316 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12319 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12322
12323 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12336 halUpdateBeaconParams.fRIFSMode =
12337 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12340
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12342 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012343
12344 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012346
12347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12351 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012352}/*WDI_ProcessUpdateBeaconParamsReq*/
12353
12354
12355
12356/**
12357 @brief Process Send Beacon template Request function (called when Main FSM
12358 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012359
12360 @param pWDICtx: pointer to the WLAN DAL context
12361 pEventData: pointer to the event information structure
12362
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 @see
12364 @return Result of the function call
12365*/
12366WDI_Status
12367WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012368(
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 WDI_ControlBlockType* pWDICtx,
12370 WDI_EventInfoType* pEventData
12371)
12372{
12373 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12374 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 wpt_uint16 usDataOffset = 0;
12377 wpt_uint16 usSendSize = 0;
12378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12379
12380 tSendBeaconReqMsg halSendBeaconReq;
12381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 -------------------------------------------------------------------------*/
12384 if (( NULL == pEventData ) ||
12385 ( NULL == pEventData->pEventData ) ||
12386 ( NULL == pEventData->pCBfnc ))
12387 {
12388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 }
12393
12394 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12395 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12396 /*-----------------------------------------------------------------------
12397 Get message buffer
12398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 sizeof(halSendBeaconReq.sendBeaconParam),
12401 &pSendBuffer, &usDataOffset, &usSendSize))||
12402 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12403 {
12404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012405 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 }
12410
12411 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12412 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12413 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12416 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12417 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12418 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012421 /* usP2PIeOffset should be atleast greater than timIeOffset */
12422 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12423 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12424 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12425 {
12426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12427 "Invalid usP2PIeOffset %hu",
12428 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12429 WDI_ASSERT(0);
12430 return WDI_STATUS_E_FAILURE;
12431 }
12432
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 wpalMemoryCopy( pSendBuffer+usDataOffset,
12437 &halSendBeaconReq.sendBeaconParam,
12438 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
12440 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012442
12443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12447 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012448}/*WDI_ProcessSendBeaconParamsReq*/
12449
12450/**
12451 @brief Process Update Beacon Params Request function (called when Main FSM
12452 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012453
12454 @param pWDICtx: pointer to the WLAN DAL context
12455 pEventData: pointer to the event information structure
12456
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 @see
12458 @return Result of the function call
12459*/
12460WDI_Status
12461WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012462(
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 WDI_ControlBlockType* pWDICtx,
12464 WDI_EventInfoType* pEventData
12465)
12466{
12467 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12468 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 wpt_uint16 usDataOffset = 0;
12471 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12474
12475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 -------------------------------------------------------------------------*/
12478 if (( NULL == pEventData ) ||
12479 ( NULL == pEventData->pEventData) ||
12480 ( NULL == pEventData->pCBfnc))
12481 {
12482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 }
12487
Jeff Johnsone7245742012-09-05 17:12:55 -070012488 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12492 /*-----------------------------------------------------------------------
12493 Get message buffer
12494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 sizeof(halUpdateProbeRspTmplParams),
12497 &pSendBuffer, &usDataOffset, &usSendSize))||
12498 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12499 {
12500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012501 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 }
12506
12507 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_MAC_ADDR_LEN);
12510
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12513
12514 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12515 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012517
12518
12519 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12520 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12521 WDI_PROBE_REQ_BITMAP_IE_LEN);
12522
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 wpalMemoryCopy( pSendBuffer+usDataOffset,
12524 &halUpdateProbeRspTmplParams,
12525 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012526
12527 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012529
12530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12534 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12535 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012536}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12537
12538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012541
12542 @param pWDICtx: pointer to the WLAN DAL context
12543 pEventData: pointer to the event information structure
12544
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 @see
12546 @return Result of the function call
12547*/
12548WDI_Status
12549WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012550(
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 WDI_ControlBlockType* pWDICtx,
12552 WDI_EventInfoType* pEventData
12553)
12554{
12555
12556 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12557 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12558
12559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 -------------------------------------------------------------------------*/
12562 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12567 {
12568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 }
12573
12574 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12577
12578 /*cache the wdi nv request message here if the the first fragment
12579 * To issue the request to HAL for the next fragment */
12580 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12581 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12583 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12585
12586 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12587 pWDICtx->pRspCBUserData = pEventData->pUserData;
12588 }
12589
12590 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12591}
12592
12593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012596
12597 @param pWDICtx: pointer to the WLAN DAL context
12598 pEventData: pointer to the event information structure
12599
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 @see
12601 @return Result of the function call
12602*/
12603WDI_Status WDI_ProcessSetMaxTxPowerReq
12604(
12605 WDI_ControlBlockType* pWDICtx,
12606 WDI_EventInfoType* pEventData
12607)
12608{
12609 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12610 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 wpt_uint16 usDataOffset = 0;
12613 wpt_uint16 usSendSize = 0;
12614 tSetMaxTxPwrReq halSetMaxTxPower;
12615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12616
12617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 -------------------------------------------------------------------------*/
12620 if (( NULL == pEventData ) ||
12621 ( NULL == pEventData->pEventData ) ||
12622 ( NULL == pEventData->pCBfnc ))
12623 {
12624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12633
12634 /*-----------------------------------------------------------------------
12635 Get message buffer
12636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012637if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12639 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012641)))
12642 {
12643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012644 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648 }
12649
12650 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12651 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12652 WDI_MAC_ADDR_LEN);
12653
12654 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12655 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12656 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012659
12660 wpalMemoryCopy( pSendBuffer+usDataOffset,
12661 &halSetMaxTxPower.setMaxTxPwrParams,
12662 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012663
12664 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012666
12667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12671 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12672 WDI_SET_MAX_TX_POWER_RESP);
12673
Jeff Johnson295189b2012-06-20 16:38:30 -070012674}
12675
Arif Hussainfc753992013-08-09 15:09:58 -070012676/*
12677 @brief Process Set Max Tx Power Per Band Request function (called when Main
12678 FSM allows it)
12679
12680 @param pWDICtx: pointer to the WLAN DAL context
12681 pEventData: pointer to the event information structure
12682
12683 @see
12684 @return Result of the function call
12685*/
12686WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12687(
12688 WDI_ControlBlockType* pWDICtx,
12689 WDI_EventInfoType* pEventData
12690)
12691{
12692 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12693 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12694 wpt_uint8* pSendBuffer = NULL;
12695 wpt_uint16 usDataOffset = 0;
12696 wpt_uint16 usSendSize = 0;
12697 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12698 WDI_Status rValue = WDI_STATUS_SUCCESS;
12699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12700
12701 /*-------------------------------------------------------------------------
12702 Sanity check
12703 -------------------------------------------------------------------------*/
12704 if (( NULL == pEventData ) ||
12705 ( NULL == pEventData->pEventData ) ||
12706 ( NULL == pEventData->pCBfnc ))
12707 {
12708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12709 "%s: Invalid parameters", __func__);
12710 WDI_ASSERT(0);
12711 return WDI_STATUS_E_FAILURE;
12712 }
12713 pwdiSetMaxTxPowerPerBandParams = \
12714 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12715
12716 wdiSetMaxTxPowerPerBandRspCb = \
12717 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12718
12719 /*-----------------------------------------------------------------------
12720 Get message buffer
12721 -----------------------------------------------------------------------*/
12722
12723 rValue = WDI_GetMessageBuffer(pWDICtx,
12724 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12725 sizeof(tSetMaxTxPwrPerBandParams),
12726 &pSendBuffer, &usDataOffset, &usSendSize);
12727
12728 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12729 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12730 {
12731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12732 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12733 pEventData, pwdiSetMaxTxPowerPerBandParams,
12734 wdiSetMaxTxPowerPerBandRspCb);
12735 WDI_ASSERT(0);
12736 return WDI_STATUS_E_FAILURE;
12737 }
12738
12739
12740 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12741 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12742 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12743
12744 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12745 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12746
12747 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12748 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12749
12750 /*-------------------------------------------------------------------------
12751 Send Set Max Tx Power Per Band Request to HAL
12752 -------------------------------------------------------------------------*/
12753 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12754 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12755 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12756}
12757
schangd82195a2013-03-13 18:41:24 -070012758/**
12759 @brief Process Set Tx Power Request function (called when Main
12760 FSM allows it)
12761
12762 @param pWDICtx: pointer to the WLAN DAL context
12763 pEventData: pointer to the event information structure
12764
12765 @see
12766 @return Result of the function call
12767*/
12768WDI_Status WDI_ProcessSetTxPowerReq
12769(
12770 WDI_ControlBlockType* pWDICtx,
12771 WDI_EventInfoType* pEventData
12772)
12773{
12774 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12775 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12776 wpt_uint8* pSendBuffer = NULL;
12777 wpt_uint16 usDataOffset = 0;
12778 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012779 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12781
12782 /*-------------------------------------------------------------------------
12783 Sanity check
12784 -------------------------------------------------------------------------*/
12785 if (( NULL == pEventData ) ||
12786 ( NULL == pEventData->pEventData ) ||
12787 ( NULL == pEventData->pCBfnc ))
12788 {
12789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12790 "%s: Invalid parameters", __func__);
12791 WDI_ASSERT(0);
12792 return WDI_STATUS_E_FAILURE;
12793 }
12794
12795 pwdiSetTxPowerParams =
12796 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12797 wdiSetTxPowerRspCb =
12798 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12799
12800 /*-----------------------------------------------------------------------
12801 Get message buffer
12802 -----------------------------------------------------------------------*/
12803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12804 sizeof(tSetTxPwrReqParams),
12805 &pSendBuffer, &usDataOffset, &usSendSize))||
12806 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12807 )))
12808 {
12809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012810 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012811 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12812 WDI_ASSERT(0);
12813 return WDI_STATUS_E_FAILURE;
12814 }
12815
Leo Changa37e2a92013-03-25 17:39:58 -070012816 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12817 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12818 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012819
12820 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12821 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12822
12823 /*-------------------------------------------------------------------------
12824 Send Set Tx Power Request to HAL
12825 -------------------------------------------------------------------------*/
12826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12827 wdiSetTxPowerRspCb, pEventData->pUserData,
12828 WDI_SET_TX_POWER_RESP);
12829}
Jeff Johnson295189b2012-06-20 16:38:30 -070012830
12831/**
12832 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12833 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012834
12835 @param pWDICtx: pointer to the WLAN DAL context
12836 pEventData: pointer to the event information structure
12837
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 @see
12839 @return Result of the function call
12840*/
12841WDI_Status
12842WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012843(
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 WDI_ControlBlockType* pWDICtx,
12845 WDI_EventInfoType* pEventData
12846)
12847{
12848 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12849 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 wpt_uint16 usDataOffset = 0;
12852 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012853 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12855
12856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 -------------------------------------------------------------------------*/
12859 if (( NULL == pEventData ) ||
12860 ( NULL == pEventData->pEventData) ||
12861 ( NULL == pEventData->pCBfnc))
12862 {
12863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 }
12868
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12873 /*-----------------------------------------------------------------------
12874 Get message buffer
12875 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12877 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 sizeof(halSetP2PGONOAParams),
12879 &pSendBuffer, &usDataOffset, &usSendSize))||
12880 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12881 {
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012883 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 }
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12893 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12902
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 wpalMemoryCopy( pSendBuffer+usDataOffset,
12904 &halSetP2PGONOAParams,
12905 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012906
12907 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012909
12910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12914 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12915 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012916}/*WDI_ProcessP2PGONOAReq*/
12917
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012918#ifdef FEATURE_WLAN_TDLS
12919
12920/**
12921 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12922 allows it)
12923
12924 @param pWDICtx: pointer to the WLAN DAL context
12925 pEventData: pointer to the event information structure
12926
12927 @see
12928 @return Result of the function call
12929*/
12930WDI_Status
12931WDI_ProcessTdlsLinkEstablishReq
12932(
12933 WDI_ControlBlockType* pWDICtx,
12934 WDI_EventInfoType* pEventData
12935)
12936{
12937 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12938 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12939 wpt_uint8* pSendBuffer = NULL;
12940 wpt_uint16 usDataOffset = 0;
12941 wpt_uint16 usSendSize = 0;
12942
12943 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12945
12946 /*-------------------------------------------------------------------------
12947 Sanity check
12948 -------------------------------------------------------------------------*/
12949 if (( NULL == pEventData ) ||
12950 ( NULL == pEventData->pEventData) ||
12951 ( NULL == pEventData->pCBfnc))
12952 {
12953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12954 "%s: Invalid parameters", __func__);
12955 WDI_ASSERT(0);
12956 return WDI_STATUS_E_FAILURE;
12957 }
12958 pwdiTDLSLinkEstablishReqParams =
12959 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12960 wdiTDLSLinkEstablishReqRspCb =
12961 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12962
12963
12964 /*-----------------------------------------------------------------------
12965 Get message buffer
12966 -----------------------------------------------------------------------*/
12967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12968 WDI_TDLS_LINK_ESTABLISH_REQ,
12969 sizeof(halSetTDLSLinkEstablishParams),
12970 &pSendBuffer, &usDataOffset, &usSendSize))||
12971 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12972 {
12973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012974 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012975 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12976 WDI_ASSERT(0);
12977 return WDI_STATUS_E_FAILURE;
12978 }
12979
12980 halSetTDLSLinkEstablishParams.staIdx =
12981 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12982 halSetTDLSLinkEstablishParams.bIsResponder =
12983 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12984 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12985 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12986 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12987 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12988 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12989 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12990 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12991 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12992 halSetTDLSLinkEstablishParams.aAck = 0;
12993 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12994 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12995 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12996
12997 wpalMemoryCopy( pSendBuffer+usDataOffset,
12998 &halSetTDLSLinkEstablishParams,
12999 sizeof(halSetTDLSLinkEstablishParams));
13000
13001 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13002 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13003
13004 /*-------------------------------------------------------------------------
13005 Send Update Probe Resp Template Request to HAL
13006 -------------------------------------------------------------------------*/
13007 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13008 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13009 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13010 return 0;
13011}/*WDI_ProcessTdlsLinkEstablishReq*/
13012
13013
13014#endif
13015
Jeff Johnson295189b2012-06-20 16:38:30 -070013016
13017
13018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 @param None
13022
13023 @see
13024 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013025*/
13026void
13027WDI_SetPowerStateCb
13028(
13029 wpt_status status,
13030 unsigned int dxePhyAddr,
13031 void *pContext
13032)
13033{
13034 wpt_status wptStatus;
13035 WDI_ControlBlockType *pCB = NULL;
13036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13037 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13038 {
13039 //it shouldn't happen, put an error msg
13040 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 /*
13042 * Trigger the event to bring the Enter BMPS req function to come
13043 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013044*/
13045 if( NULL != pContext )
13046 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 }
13049 else
13050 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 pCB = &gWDICb;
13053 }
13054 pCB->dxePhyAddr = dxePhyAddr;
13055 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13056 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13057 {
13058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13059 "Failed to set an event");
13060
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 }
13063 return;
13064}
13065
13066
13067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013070
13071 @param pWDICtx: pointer to the WLAN DAL context
13072 pEventData: pointer to the event information structure
13073
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 @see
13075 @return Result of the function call
13076*/
13077WDI_Status
13078WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013079(
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 WDI_ControlBlockType* pWDICtx,
13081 WDI_EventInfoType* pEventData
13082)
13083{
Jeff Johnson43971f52012-07-17 12:26:56 -070013084 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 wpt_uint16 usDataOffset = 0;
13088 wpt_uint16 usSendSize = 0;
13089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13090
13091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 -------------------------------------------------------------------------*/
13094 if (( NULL == pEventData ) ||
13095 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13096 {
13097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013100 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 }
13102
13103 /*-----------------------------------------------------------------------
13104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 0,
13109 &pSendBuffer, &usDataOffset, &usSendSize))||
13110 ( usSendSize < (usDataOffset )))
13111 {
13112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013113 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 pEventData, wdiEnterImpsRspCb);
13115 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013116 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 }
13118
13119 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013120 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 {
13123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13124 "WDI Init failed to reset an event");
13125
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013127 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 }
13129
13130 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013131 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13132 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013134 "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 -080013135 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013136 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013137 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013138
13139 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013140 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013141 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013142 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13143 WDI_SET_POWER_STATE_TIMEOUT);
13144 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 {
13146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13147 "WDI Init failed to wait on an event");
13148
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013150 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 }
13152
13153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13157 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013158
13159fail:
13160 // Release the message buffer so we don't leak
13161 wpalMemoryFree(pSendBuffer);
13162
13163failRequest:
13164 //WDA should have failure check to avoid the memory leak
13165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013166}/*WDI_ProcessEnterImpsReq*/
13167
13168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013171
13172 @param pWDICtx: pointer to the WLAN DAL context
13173 pEventData: pointer to the event information structure
13174
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 @see
13176 @return Result of the function call
13177*/
13178WDI_Status
13179WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013180(
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 WDI_ControlBlockType* pWDICtx,
13182 WDI_EventInfoType* pEventData
13183)
13184{
13185 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 wpt_uint16 usDataOffset = 0;
13188 wpt_uint16 usSendSize = 0;
13189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13190
13191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 -------------------------------------------------------------------------*/
13194 if (( NULL == pEventData ) ||
13195 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13196 {
13197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 }
13202
13203 /*-----------------------------------------------------------------------
13204 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 0,
13209 &pSendBuffer, &usDataOffset, &usSendSize))||
13210 ( usSendSize < (usDataOffset )))
13211 {
13212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013213 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 pEventData, wdiExitImpsRspCb);
13215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 }
13218
13219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13223 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224}/*WDI_ProcessExitImpsReq*/
13225
13226/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013229
13230 @param pWDICtx: pointer to the WLAN DAL context
13231 pEventData: pointer to the event information structure
13232
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 @see
13234 @return Result of the function call
13235*/
13236WDI_Status
13237WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013238(
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 WDI_ControlBlockType* pWDICtx,
13240 WDI_EventInfoType* pEventData
13241)
13242{
13243 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13244 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 wpt_uint16 usDataOffset = 0;
13247 wpt_uint16 usSendSize = 0;
13248 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013249 wpt_status wptStatus;
13250
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13252
13253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 -------------------------------------------------------------------------*/
13256 if (( NULL == pEventData ) ||
13257 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13258 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013263 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 }
13265
13266 /*-----------------------------------------------------------------------
13267 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 sizeof(enterBmpsReq),
13272 &pSendBuffer, &usDataOffset, &usSendSize))||
13273 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13274 {
13275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013276 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13278 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013279 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 }
13281
13282 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013283 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13284 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 {
13286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13287 "WDI Init failed to reset an event");
13288
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013290 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
13293 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013294 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13295 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13296 {
13297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013298 "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 -080013299 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013300 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013301 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013302
13303/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013306 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13307 WDI_SET_POWER_STATE_TIMEOUT);
13308 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 {
13310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13311 "WDI Init failed to wait on an event");
13312
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013314 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 }
13316
13317 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13318
13319 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13320 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13321 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13322 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13323
13324 // For CCX and 11R Roaming
13325 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13326 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13327 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13328
13329 wpalMemoryCopy( pSendBuffer+usDataOffset,
13330 &enterBmpsReq,
13331 sizeof(enterBmpsReq));
13332
13333 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013335
13336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13340 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013341
13342fail:
13343 // Release the message buffer so we don't leak
13344 wpalMemoryFree(pSendBuffer);
13345
13346failRequest:
13347 //WDA should have failure check to avoid the memory leak
13348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349}/*WDI_ProcessEnterBmpsReq*/
13350
13351/**
13352 @brief Process Exit BMPS Request function (called when Main FSM
13353 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013354
13355 @param pWDICtx: pointer to the WLAN DAL context
13356 pEventData: pointer to the event information structure
13357
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 @see
13359 @return Result of the function call
13360*/
13361WDI_Status
13362WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013363(
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 WDI_ControlBlockType* pWDICtx,
13365 WDI_EventInfoType* pEventData
13366)
13367{
13368 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13369 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 wpt_uint16 usDataOffset = 0;
13372 wpt_uint16 usSendSize = 0;
13373 tHalExitBmpsReqParams exitBmpsReq;
13374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13375
13376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 -------------------------------------------------------------------------*/
13379 if (( NULL == pEventData ) ||
13380 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13381 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13382 {
13383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 }
13388
13389 /*-----------------------------------------------------------------------
13390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 sizeof(exitBmpsReq),
13395 &pSendBuffer, &usDataOffset, &usSendSize))||
13396 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13397 {
13398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013399 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13405
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13407
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 wpalMemoryCopy( pSendBuffer+usDataOffset,
13409 &exitBmpsReq,
13410 sizeof(exitBmpsReq));
13411
13412 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013414
13415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13419 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013420}/*WDI_ProcessExitBmpsReq*/
13421
13422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013425
13426 @param pWDICtx: pointer to the WLAN DAL context
13427 pEventData: pointer to the event information structure
13428
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 @see
13430 @return Result of the function call
13431*/
13432WDI_Status
13433WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013434(
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 WDI_ControlBlockType* pWDICtx,
13436 WDI_EventInfoType* pEventData
13437)
13438{
13439 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13440 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 wpt_uint16 usDataOffset = 0;
13443 wpt_uint16 usSendSize = 0;
13444 tUapsdReqParams enterUapsdReq;
13445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13446
13447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 -------------------------------------------------------------------------*/
13450 if (( NULL == pEventData ) ||
13451 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13452 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13453 {
13454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 }
13459
13460 /*-----------------------------------------------------------------------
13461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 sizeof(enterUapsdReq),
13466 &pSendBuffer, &usDataOffset, &usSendSize))||
13467 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13468 {
13469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013470 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 }
13475
13476 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13477 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13478 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13479 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13480 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13481 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13482 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13483 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013485
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 wpalMemoryCopy( pSendBuffer+usDataOffset,
13487 &enterUapsdReq,
13488 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013489
13490 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013492
13493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13497 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013498}/*WDI_ProcessEnterUapsdReq*/
13499
13500/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013503
13504 @param pWDICtx: pointer to the WLAN DAL context
13505 pEventData: pointer to the event information structure
13506
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 @see
13508 @return Result of the function call
13509*/
13510WDI_Status
13511WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013512(
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 WDI_ControlBlockType* pWDICtx,
13514 WDI_EventInfoType* pEventData
13515)
13516{
13517 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 wpt_uint16 usDataOffset = 0;
13520 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013521 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13522 wpt_uint8 bssIdx = 0;
13523
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13525
13526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 -------------------------------------------------------------------------*/
13529 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013530 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13532 {
13533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 }
13538
13539 /*-----------------------------------------------------------------------
13540 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013544 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013546 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 {
13548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013549 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 pEventData, wdiExitUapsdRspCb);
13551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 }
13554
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013555 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13556
13557 wpalMemoryCopy( pSendBuffer+usDataOffset,
13558 &bssIdx,
13559 sizeof(wpt_uint8));
13560
13561 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13562 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13563
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13568 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013569}/*WDI_ProcessExitUapsdReq*/
13570
13571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013574
13575 @param pWDICtx: pointer to the WLAN DAL context
13576 pEventData: pointer to the event information structure
13577
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 @see
13579 @return Result of the function call
13580*/
13581WDI_Status
13582WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013583(
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 WDI_ControlBlockType* pWDICtx,
13585 WDI_EventInfoType* pEventData
13586)
13587{
13588 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13589 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 wpt_uint16 usDataOffset = 0;
13592 wpt_uint16 usSendSize = 0;
13593 tUapsdInfo uapsdAcParamsReq;
13594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13595
13596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 -------------------------------------------------------------------------*/
13599 if (( NULL == pEventData ) ||
13600 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13601 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13602 {
13603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 }
13608
13609 /*-----------------------------------------------------------------------
13610 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 sizeof(uapsdAcParamsReq),
13615 &pSendBuffer, &usDataOffset, &usSendSize))||
13616 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13617 {
13618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013619 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 }
13624
13625 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13626 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13627 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13628 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13629 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13630 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13631
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wpalMemoryCopy( pSendBuffer+usDataOffset,
13633 &uapsdAcParamsReq,
13634 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013635
13636 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638
13639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13643 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013644}/*WDI_ProcessSetUapsdAcParamsReq*/
13645
13646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013647 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013649
13650 @param pWDICtx: pointer to the WLAN DAL context
13651 pEventData: pointer to the event information structure
13652
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 @see
13654 @return Result of the function call
13655*/
13656WDI_Status
13657WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013658(
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 WDI_ControlBlockType* pWDICtx,
13660 WDI_EventInfoType* pEventData
13661)
13662{
13663 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13664 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 wpt_uint16 usDataOffset = 0;
13667 wpt_uint16 usSendSize = 0;
13668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13669
13670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 -------------------------------------------------------------------------*/
13673 if (( NULL == pEventData ) ||
13674 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13675 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13676 {
13677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 }
13682
13683 /*-----------------------------------------------------------------------
13684 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13689 &pSendBuffer, &usDataOffset, &usSendSize))||
13690 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13691 {
13692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013693 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 }
13698
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 wpalMemoryCopy( pSendBuffer+usDataOffset,
13700 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13701 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013702
13703 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013705
13706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13710 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013711}/*WDI_ProcessUpdateUapsdParamsReq*/
13712
13713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013716
13717 @param pWDICtx: pointer to the WLAN DAL context
13718 pEventData: pointer to the event information structure
13719
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 @see
13721 @return Result of the function call
13722*/
13723WDI_Status
13724WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013725(
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 WDI_ControlBlockType* pWDICtx,
13727 WDI_EventInfoType* pEventData
13728)
13729{
13730 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13731 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 wpt_uint16 usDataOffset = 0;
13734 wpt_uint16 usSendSize = 0;
13735 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13736
13737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13738
13739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 -------------------------------------------------------------------------*/
13742 if (( NULL == pEventData ) ||
13743 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13744 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13745 {
13746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 }
13751
13752 /*-----------------------------------------------------------------------
13753 Get message buffer
13754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 sizeof(halRxpFilterParams),
13757 &pSendBuffer, &usDataOffset, &usSendSize))||
13758 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13759 {
13760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013761 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 }
13766
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wpalMemoryCopy( pSendBuffer+usDataOffset,
13773 &halRxpFilterParams,
13774 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013775
13776 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13783 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013784}/*WDI_ProcessConfigureRxpFilterReq*/
13785
13786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013789
13790 @param pWDICtx: pointer to the WLAN DAL context
13791 pEventData: pointer to the event information structure
13792
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 @see
13794 @return Result of the function call
13795*/
13796WDI_Status
13797WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013798(
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 WDI_ControlBlockType* pWDICtx,
13800 WDI_EventInfoType* pEventData
13801)
13802{
13803 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13804 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 wpt_uint16 usDataOffset = 0;
13807 wpt_uint16 usSendSize = 0;
13808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13809
13810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 -------------------------------------------------------------------------*/
13813 if (( NULL == pEventData ) ||
13814 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13815 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13816 {
13817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 }
13822
13823 /*-----------------------------------------------------------------------
13824 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13829 &pSendBuffer, &usDataOffset, &usSendSize))||
13830 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13831 {
13832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013833 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 }
13838
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 wpalMemoryCopy( pSendBuffer+usDataOffset,
13840 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13841 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13842 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13843 &pwdiBeaconFilterParams->aFilters[0],
13844 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013845
13846 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013848
13849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13853 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013854}/*WDI_ProcessSetBeaconFilterReq*/
13855
13856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013859
13860 @param pWDICtx: pointer to the WLAN DAL context
13861 pEventData: pointer to the event information structure
13862
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 @see
13864 @return Result of the function call
13865*/
13866WDI_Status
13867WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013868(
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 WDI_ControlBlockType* pWDICtx,
13870 WDI_EventInfoType* pEventData
13871)
13872{
13873 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13874 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 wpt_uint16 usDataOffset = 0;
13877 wpt_uint16 usSendSize = 0;
13878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13879
13880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013882 -------------------------------------------------------------------------*/
13883 if (( NULL == pEventData ) ||
13884 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13885 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13886 {
13887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 }
13892
13893 /*-----------------------------------------------------------------------
13894 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13899 &pSendBuffer, &usDataOffset, &usSendSize))||
13900 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13901 {
13902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013903 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 }
13908
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 wpalMemoryCopy( pSendBuffer+usDataOffset,
13910 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13911 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013912
13913 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13920 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013921}
13922
13923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013924 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013926
13927 @param pWDICtx: pointer to the WLAN DAL context
13928 pEventData: pointer to the event information structure
13929
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 @see
13931 @return Result of the function call
13932*/
13933WDI_Status
13934WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013935(
Jeff Johnson295189b2012-06-20 16:38:30 -070013936 WDI_ControlBlockType* pWDICtx,
13937 WDI_EventInfoType* pEventData
13938)
13939{
13940 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13941 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 wpt_uint16 usDataOffset = 0;
13944 wpt_uint16 usSendSize = 0;
13945 tHalRSSIThresholds rssiThresholdsReq;
13946 WDI_Status ret_status = 0;
13947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13948
13949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 -------------------------------------------------------------------------*/
13952 if (( NULL == pEventData ) ||
13953 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13954 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13955 {
13956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 }
13961
13962 /*-----------------------------------------------------------------------
13963 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 sizeof(rssiThresholdsReq),
13968 &pSendBuffer, &usDataOffset, &usSendSize))||
13969 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13970 {
13971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013972 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 }
13977
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13998
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wpalMemoryCopy( pSendBuffer+usDataOffset,
14000 &rssiThresholdsReq,
14001 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014002
14003 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005
14006 /*-------------------------------------------------------------------------
14007 Send Set threshold req to HAL
14008 -------------------------------------------------------------------------*/
14009 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14010 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14011 {
14012 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14013 // req. Then as a result of processing the threshold cross ind, we trigger
14014 // a Set threshold req, then we need to indicate to WDI that it needs to
14015 // go to busy state as a result of the indication as we sent a req in the
14016 // same WDI context.
14017 // Hence expected state transition is to busy.
14018 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14019 }
14020
14021 return ret_status;
14022}
14023
14024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014027
14028 @param pWDICtx: pointer to the WLAN DAL context
14029 pEventData: pointer to the event information structure
14030
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 @see
14032 @return Result of the function call
14033*/
14034WDI_Status
14035WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014036(
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 WDI_ControlBlockType* pWDICtx,
14038 WDI_EventInfoType* pEventData
14039)
14040{
14041 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14042 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014044 wpt_uint16 usDataOffset = 0;
14045 wpt_uint16 usSendSize = 0;
14046 tHalHostOffloadReq hostOffloadParams;
14047 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014048 wpt_uint8 ucCurrentBSSSesIdx = 0;
14049 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014050
14051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14052
14053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 -------------------------------------------------------------------------*/
14056 if (( NULL == pEventData ) ||
14057 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14058 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14059 {
14060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014063 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 }
14065
14066 /*-----------------------------------------------------------------------
14067 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14072 &pSendBuffer, &usDataOffset, &usSendSize))||
14073 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14074 {
14075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014076 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14078 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014079 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 }
14081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014082 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14083 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14084 &pBSSSes);
14085 if ( NULL == pBSSSes )
14086 {
14087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053014088 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14089 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014090 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014091 }
14092
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14094 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014095
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14097 {
14098 // ARP Offload
14099 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14100 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14101 4);
14102 }
14103 else
14104 {
14105 // NS Offload
14106 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14107 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14108 16);
14109
14110#ifdef WLAN_NS_OFFLOAD
14111 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14112 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14113 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14114 16);
14115 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14116 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14117 16);
14118 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14119 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14120 16);
14121 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14122 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14123 16);
14124 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14125 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14126 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053014127 nsOffloadParams.srcIPv6AddrValid =
14128 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14129
14130 nsOffloadParams.targetIPv6Addr1Valid =
14131 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14132
14133 nsOffloadParams.targetIPv6Addr2Valid =
14134 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14135
14136 nsOffloadParams.slotIndex =
14137 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014138
Jeff Johnson295189b2012-06-20 16:38:30 -070014139#endif // WLAN_NS_OFFLOAD
14140 }
14141
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014142 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14143
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 // copy hostOffloadParams into pSendBuffer
14145 wpalMemoryCopy( pSendBuffer+usDataOffset,
14146 &hostOffloadParams,
14147 sizeof(hostOffloadParams));
14148
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014149 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014151 // copy nsOffloadParams into pSendBuffer
14152 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 &nsOffloadParams,
14154 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014155 }
14156 else
14157 {
14158#ifdef WLAN_NS_OFFLOAD
14159 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14160 {
14161 // copy nsOffloadParams into pSendBuffer
14162 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14163 &nsOffloadParams,
14164 sizeof(nsOffloadParams));
14165 }
14166#endif
14167 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014168
14169 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014171
14172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14176 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014177
14178fail:
14179 // Release the message buffer so we don't leak
14180 wpalMemoryFree(pSendBuffer);
14181
14182failRequest:
14183 //WDA should have failure check to avoid the memory leak
14184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185}/*WDI_ProcessHostOffloadReq*/
14186
14187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014190
14191 @param pWDICtx: pointer to the WLAN DAL context
14192 pEventData: pointer to the event information structure
14193
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 @see
14195 @return Result of the function call
14196*/
14197WDI_Status
14198WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014199(
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 WDI_ControlBlockType* pWDICtx,
14201 WDI_EventInfoType* pEventData
14202)
14203{
14204 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14205 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014207 wpt_uint16 usDataOffset = 0;
14208 wpt_uint16 usSendSize = 0;
14209 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014210 wpt_uint8 ucCurrentBSSSesIdx = 0;
14211 WDI_BSSSessionType* pBSSSes = NULL;
14212
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14214
14215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 -------------------------------------------------------------------------*/
14218 if (( NULL == pEventData ) ||
14219 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14220 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14221 {
14222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14223 "Invalid parameters in Keep Alive req");
14224 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014225 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 }
14227
14228 /*-----------------------------------------------------------------------
14229 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014230 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 sizeof(keepAliveReq),
14234 &pSendBuffer, &usDataOffset, &usSendSize))||
14235 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14236 {
14237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014238 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14240 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014241 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 }
14243
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014244 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14245 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14246 &pBSSSes);
14247 if ( NULL == pBSSSes )
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014250 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014251 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014252 }
14253
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14255 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14256
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014257 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014258
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14260 {
14261 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14262 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14263 HAL_IPV4_ADDR_LEN);
14264 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14265 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 wpalMemoryCopy(keepAliveReq.destMacAddr,
14268 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14269 HAL_MAC_ADDR_LEN);
14270 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014271
14272 wpalMemoryCopy( pSendBuffer+usDataOffset,
14273 &keepAliveReq,
14274 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014275
14276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014277 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014278
14279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014280 "Process keep alive req time period %d",
14281 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014282
14283 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014285
14286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14287 "Sending keep alive req to HAL");
14288
14289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14293 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014294
14295fail:
14296 // Release the message buffer so we don't leak
14297 wpalMemoryFree(pSendBuffer);
14298
14299failRequest:
14300 //WDA should have failure check to avoid the memory leak
14301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014302}/*WDI_ProcessKeepAliveReq*/
14303
14304
14305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014308
14309 @param pWDICtx: pointer to the WLAN DAL context
14310 pEventData: pointer to the event information structure
14311
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 @see
14313 @return Result of the function call
14314*/
14315WDI_Status
14316WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014317(
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 WDI_ControlBlockType* pWDICtx,
14319 WDI_EventInfoType* pEventData
14320)
14321{
14322 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14323 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 wpt_uint16 usDataOffset = 0;
14326 wpt_uint16 usSendSize = 0;
14327 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014328 wpt_uint8 ucCurrentBSSSesIdx = 0;
14329 WDI_BSSSessionType* pBSSSes = NULL;
14330
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14332
14333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 -------------------------------------------------------------------------*/
14336 if (( NULL == pEventData ) ||
14337 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14338 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14339 {
14340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014341 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014343 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 }
14345
14346 /*-----------------------------------------------------------------------
14347 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 sizeof(wowlAddBcPtrnReq),
14352 &pSendBuffer, &usDataOffset, &usSendSize))||
14353 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14354 {
14355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014356 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14358 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014359 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 }
14361
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014362 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14363 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14364 &pBSSSes);
14365 if ( NULL == pBSSSes )
14366 {
14367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014368 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014369 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014370 }
14371
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14380
14381 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14382 {
14383 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14385 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14386 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14388 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14389 }
14390 else
14391 {
14392 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14393 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14394 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14395 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14396 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14397 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14398
14399 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14400 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14401 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14402 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14404 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14405 }
14406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014407 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14408
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 wpalMemoryCopy( pSendBuffer+usDataOffset,
14410 &wowlAddBcPtrnReq,
14411 sizeof(wowlAddBcPtrnReq));
14412
14413 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014415
14416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14420 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014421fail:
14422 // Release the message buffer so we don't leak
14423 wpalMemoryFree(pSendBuffer);
14424
14425failRequest:
14426 //WDA should have failure check to avoid the memory leak
14427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014428}/*WDI_ProcessWowlAddBcPtrnReq*/
14429
14430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014433
14434 @param pWDICtx: pointer to the WLAN DAL context
14435 pEventData: pointer to the event information structure
14436
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 @see
14438 @return Result of the function call
14439*/
14440WDI_Status
14441WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014442(
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 WDI_ControlBlockType* pWDICtx,
14444 WDI_EventInfoType* pEventData
14445)
14446{
14447 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14448 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 wpt_uint16 usDataOffset = 0;
14451 wpt_uint16 usSendSize = 0;
14452 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014453 wpt_uint8 ucCurrentBSSSesIdx = 0;
14454 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14456
14457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 -------------------------------------------------------------------------*/
14460 if (( NULL == pEventData ) ||
14461 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14462 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14463 {
14464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014467 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 }
14469
14470 /*-----------------------------------------------------------------------
14471 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 sizeof(wowlDelBcPtrnReq),
14476 &pSendBuffer, &usDataOffset, &usSendSize))||
14477 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14478 {
14479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014480 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14482 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014483 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 }
14485
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014486 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14487 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14488 &pBSSSes);
14489 if ( NULL == pBSSSes )
14490 {
14491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014492 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014493 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014494 }
14495
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014498
14499 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14500
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 wpalMemoryCopy( pSendBuffer+usDataOffset,
14502 &wowlDelBcPtrnReq,
14503 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014504
14505 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014507
14508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14512 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014513
14514fail:
14515 // Release the message buffer so we don't leak
14516 wpalMemoryFree(pSendBuffer);
14517
14518failRequest:
14519 //WDA should have failure check to avoid the memory leak
14520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014521}/*WDI_ProcessWowlDelBcPtrnReq*/
14522
14523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014526
14527 @param pWDICtx: pointer to the WLAN DAL context
14528 pEventData: pointer to the event information structure
14529
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 @see
14531 @return Result of the function call
14532*/
14533WDI_Status
14534WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014535(
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 WDI_ControlBlockType* pWDICtx,
14537 WDI_EventInfoType* pEventData
14538)
14539{
14540 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14541 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 wpt_uint16 usDataOffset = 0;
14544 wpt_uint16 usSendSize = 0;
14545 tHalWowlEnterParams wowlEnterReq;
14546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14547
14548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -------------------------------------------------------------------------*/
14551 if (( NULL == pEventData ) ||
14552 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14553 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14554 {
14555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 }
14560
14561 /*-----------------------------------------------------------------------
14562 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 sizeof(wowlEnterReq),
14567 &pSendBuffer, &usDataOffset, &usSendSize))||
14568 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14569 {
14570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014571 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 }
14576
Kumar Anand21a26022013-07-22 14:35:34 -070014577 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14578
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014581 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14595
14596#ifdef WLAN_WAKEUP_EVENTS
14597 wowlEnterReq.ucWoWEAPIDRequestEnable =
14598 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14599
14600 wowlEnterReq.ucWoWEAPOL4WayEnable =
14601 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14602
14603 wowlEnterReq.ucWowNetScanOffloadMatch =
14604 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14605
14606 wowlEnterReq.ucWowGTKRekeyError =
14607 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14608
14609 wowlEnterReq.ucWoWBSSConnLoss =
14610 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14611#endif // WLAN_WAKEUP_EVENTS
14612
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014613 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14614
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14616 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14617 sizeof(tSirMacAddr));
14618
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 wpalMemoryCopy( pSendBuffer+usDataOffset,
14620 &wowlEnterReq,
14621 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014622
14623 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014625
14626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14630 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014631}/*WDI_ProcessWowlEnterReq*/
14632
14633/**
14634 @brief Process Wowl exit Request function (called when Main FSM
14635 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014636
14637 @param pWDICtx: pointer to the WLAN DAL context
14638 pEventData: pointer to the event information structure
14639
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 @see
14641 @return Result of the function call
14642*/
14643WDI_Status
14644WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014645(
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 WDI_ControlBlockType* pWDICtx,
14647 WDI_EventInfoType* pEventData
14648)
14649{
14650 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014651 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 wpt_uint16 usDataOffset = 0;
14654 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014655 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14657
14658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 -------------------------------------------------------------------------*/
14661 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014662 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14664 {
14665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 }
14670
14671 /*-----------------------------------------------------------------------
14672 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014676 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014678 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 {
14680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014681 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 pEventData, wdiWowlExitCb);
14683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 }
14686
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014687 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14688
14689 wpalMemoryCopy( pSendBuffer+usDataOffset,
14690 &wowlExitparams,
14691 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14696 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014697}/*WDI_ProcessWowlExitReq*/
14698
14699/**
14700 @brief Process Configure Apps Cpu Wakeup State Request function
14701 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014702
14703 @param pWDICtx: pointer to the WLAN DAL context
14704 pEventData: pointer to the event information structure
14705
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 @see
14707 @return Result of the function call
14708*/
14709WDI_Status
14710WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014711(
Jeff Johnson295189b2012-06-20 16:38:30 -070014712 WDI_ControlBlockType* pWDICtx,
14713 WDI_EventInfoType* pEventData
14714)
14715{
14716 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14717 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 wpt_uint16 usDataOffset = 0;
14720 wpt_uint16 usSendSize = 0;
14721 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14723
14724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 -------------------------------------------------------------------------*/
14727 if (( NULL == pEventData ) ||
14728 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14729 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14730 {
14731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 }
14736
14737 /*-----------------------------------------------------------------------
14738 Get message buffer
14739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 sizeof(halCfgAppsCpuWakeupStateReqParams),
14742 &pSendBuffer, &usDataOffset, &usSendSize))||
14743 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14744 {
14745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014746 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 }
14751
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14754
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 wpalMemoryCopy( pSendBuffer+usDataOffset,
14756 &halCfgAppsCpuWakeupStateReqParams,
14757 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014758
14759 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014761
14762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14766 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14767 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014768}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14769
14770#ifdef WLAN_FEATURE_VOWIFI_11R
14771/**
14772 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14773 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014774
14775 @param pWDICtx: pointer to the WLAN DAL context
14776 pEventData: pointer to the event information structure
14777
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 @see
14779 @return Result of the function call
14780*/
14781WDI_Status
14782WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014783(
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 WDI_ControlBlockType* pWDICtx,
14785 WDI_EventInfoType* pEventData
14786)
14787{
14788 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14789 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 wpt_uint16 usDataOffset = 0;
14794 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 wpt_macAddr macBSSID;
14797 tAggrAddTsReq halAggrAddTsReq;
14798 int i;
14799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14800
14801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -------------------------------------------------------------------------*/
14804 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14805 ( NULL == pEventData->pCBfnc ))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 }
14812 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14813 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14814 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14815 /*-------------------------------------------------------------------------
14816 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 -------------------------------------------------------------------------*/
14819 wpalMutexAcquire(&pWDICtx->wptMutex);
14820
14821 /*------------------------------------------------------------------------
14822 Find the BSS for which the request is made and identify WDI session
14823 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14825 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 &macBSSID))
14827 {
14828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014829 "This station does not exist in the WDI Station Table %d",
14830 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 }
14834
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14836 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14839 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14840 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014841
14842 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014845
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 /*------------------------------------------------------------------------
14847 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 ------------------------------------------------------------------------*/
14850 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14851 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14853 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14854 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014855
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 }
14860
14861 wpalMutexRelease(&pWDICtx->wptMutex);
14862 /*-----------------------------------------------------------------------
14863 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 sizeof(tAggrAddTsParams),
14868 &pSendBuffer, &usDataOffset, &usSendSize))||
14869 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14870 {
14871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014872 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 }
14877
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14882
14883 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14884 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14891 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14894 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14897 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14900 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14903 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14906 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14909 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14912 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917
14918
14919 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14949 }
14950
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 wpalMemoryCopy( pSendBuffer+usDataOffset,
14952 &halAggrAddTsReq,
14953 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014954
14955 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014957
14958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014964}/*WDI_ProcessAggrAddTSpecReq*/
14965#endif /* WLAN_FEATURE_VOWIFI_11R */
14966
14967/**
14968 @brief Process Shutdown Request function (called when Main FSM
14969 allows it)
14970
14971 @param pWDICtx: pointer to the WLAN DAL context
14972 pEventData: pointer to the event information structure
14973
14974 @see
14975 @return Result of the function call
14976*/
14977WDI_Status
14978WDI_ProcessShutdownReq
14979(
14980 WDI_ControlBlockType* pWDICtx,
14981 WDI_EventInfoType* pEventData
14982 )
14983{
14984 wpt_status wptStatus;
14985
14986
14987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14988
14989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 -------------------------------------------------------------------------*/
14992 if ( NULL == pEventData )
14993 {
14994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 WDI_ASSERT(0);
14997 return WDI_STATUS_E_FAILURE;
14998 }
14999
15000 wpalMutexAcquire(&pWDICtx->wptMutex);
15001
15002
15003 gWDIInitialized = eWLAN_PAL_FALSE;
15004 /*! TO DO: stop the data services */
15005 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15006 {
15007 /*Stop the STA Table !UT- check this logic again
15008 It is safer to do it here than on the response - because a stop is imminent*/
15009 WDI_STATableStop(pWDICtx);
15010
15011 /* Stop Transport Driver, DXE */
15012 WDTS_Stop(pWDICtx);
15013 }
15014
15015 /*Clear all pending request*/
15016 WDI_ClearPendingRequests(pWDICtx);
15017 /* Close Data transport*/
15018 /* FTM mode does not open Data Path */
15019 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15020 {
15021 WDTS_Close(pWDICtx);
15022 }
15023 /*Close the STA Table !UT- check this logic again*/
15024 WDI_STATableClose(pWDICtx);
15025 /*close the PAL */
15026 wptStatus = wpalClose(pWDICtx->pPALContext);
15027 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15028 {
15029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15030 "Failed to wpal Close %d", wptStatus);
15031 WDI_ASSERT(0);
15032 }
15033
15034 /*Transition back to init state*/
15035 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15036
15037 wpalMutexRelease(&pWDICtx->wptMutex);
15038
15039 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015041
15042
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015044}/*WDI_ProcessShutdownReq*/
15045
15046/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015048========================================================================*/
15049
15050/**
15051 @brief Process Start Response function (called when a response
15052 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015053
15054 @param pWDICtx: pointer to the WLAN DAL context
15055 pEventData: pointer to the event information structure
15056
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 @see
15058 @return Result of the function call
15059*/
15060WDI_Status
15061WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015062(
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 WDI_ControlBlockType* pWDICtx,
15064 WDI_EventInfoType* pEventData
15065)
15066{
15067 WDI_StartRspParamsType wdiRspParams;
15068 WDI_StartRspCb wdiStartRspCb = NULL;
15069
15070 tHalMacStartRspParams* startRspParams;
15071
15072#ifndef HAL_SELF_STA_PER_BSS
15073 WDI_AddStaParams wdiAddSTAParam = {0};
15074#endif
15075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15076
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 -------------------------------------------------------------------------*/
15081 if (( NULL == pEventData ) ||
15082 ( NULL == pEventData->pEventData) ||
15083 ( NULL == wdiStartRspCb ))
15084 {
15085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 }
15090
15091 /*-------------------------------------------------------------------------
15092 Extract response and send it to UMAC
15093 -------------------------------------------------------------------------*/
15094 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15095 {
15096 // not enough data was received
15097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson27c67c82013-11-22 16:44:20 -080015098 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 }
15103
15104 /*-------------------------------------------------------------------------
15105 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 -------------------------------------------------------------------------*/
15108 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15109
15110 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15111 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15112 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15113 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15114 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15115 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15116 wdiRspParams.wlanReportedVersion.major =
15117 startRspParams->wcnssWlanVersion.major;
15118 wdiRspParams.wlanReportedVersion.minor =
15119 startRspParams->wcnssWlanVersion.minor;
15120 wdiRspParams.wlanReportedVersion.version =
15121 startRspParams->wcnssWlanVersion.version;
15122 wdiRspParams.wlanReportedVersion.revision =
15123 startRspParams->wcnssWlanVersion.revision;
15124 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15125 startRspParams->wcnssCrmVersionString,
15126 sizeof(wdiRspParams.wcnssSoftwareVersion));
15127 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15128 startRspParams->wcnssWlanVersionString,
15129 sizeof(wdiRspParams.wcnssHardwareVersion));
15130 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15131
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015132 /*Save the HAL Version*/
15133 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15134
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 wpalMutexAcquire(&pWDICtx->wptMutex);
15136 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15137 {
15138 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15139
15140 /*Cache the start response for further use*/
15141 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 sizeof(pWDICtx->wdiCachedStartRspParams));
15144
15145 }
15146 else
15147 {
15148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15149 "Failed to start device with status %s(%d)",
15150 WDI_getHALStatusMsgString(startRspParams->status),
15151 startRspParams->status);
15152
15153 /*Set the expected state transition to stopped - because the start has
15154 failed*/
15155 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15156
15157 wpalMutexRelease(&pWDICtx->wptMutex);
15158
15159 /*Notify UMAC*/
15160 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015161
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15163
15164 /*Although the response is an error - it was processed by our function
15165 so as far as the caller is concerned this is a succesful reponse processing*/
15166 return WDI_STATUS_SUCCESS;
15167 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015168
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 wpalMutexRelease(&pWDICtx->wptMutex);
15170
15171 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15172 {
15173 /* FTM mode does not need to execute below */
15174 /* Notify UMAC */
15175 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15176 return WDI_STATUS_SUCCESS;
15177 }
15178
15179 /* START the Data transport */
15180 WDTS_startTransport(pWDICtx);
15181
15182 /*Start the STA Table !- check this logic again*/
15183 WDI_STATableStart(pWDICtx);
15184
15185#ifndef HAL_SELF_STA_PER_BSS
15186 /* Store the Self STA Index */
15187 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15188
15189 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15190 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15191 WDI_MAC_ADDR_LEN);
15192
15193 /* At this point add the self-STA */
15194
15195 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15196 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15197 /*! TO DO: wdiAddSTAParam.dpuSig */
15198 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15199 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15200 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15201
15202 //all DPU indices are the same for self STA
15203 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15204 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015205 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15207 WDI_MAC_ADDR_LEN);
15208 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15209 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15210
15211 /* Note: Since we don't get an explicit config STA request for self STA, we
15212 add the self STA upon receiving the Start response message. But the
15213 self STA entry in the table is deleted when WDI gets an explicit delete STA
15214 request */
15215 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15216#endif
15217
15218 /*Notify UMAC*/
15219 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15220
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015222}/*WDI_ProcessStartRsp*/
15223
15224
15225/**
15226 @brief Process Stop Response function (called when a response
15227 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015228
15229 @param pWDICtx: pointer to the WLAN DAL context
15230 pEventData: pointer to the event information structure
15231
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 @see
15233 @return Result of the function call
15234*/
15235WDI_Status
15236WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015237(
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 WDI_ControlBlockType* pWDICtx,
15239 WDI_EventInfoType* pEventData
15240)
15241{
15242 WDI_Status wdiStatus;
15243 WDI_StopRspCb wdiStopRspCb = NULL;
15244
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15247
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 -------------------------------------------------------------------------*/
15252 if (( NULL == pEventData ) ||
15253 ( NULL == pEventData->pEventData) ||
15254 ( NULL == wdiStopRspCb ))
15255 {
15256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 }
15261
15262 /*-------------------------------------------------------------------------
15263 Extract response and send it to UMAC
15264 -------------------------------------------------------------------------*/
15265 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15266 {
15267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015268 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 pEventData->uEventDataSize);
15270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 }
15273
15274 /*-------------------------------------------------------------------------
15275 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15279 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 sizeof(halMacStopRspMsg.stopRspParams));
15281
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015283
15284 wpalMutexAcquire(&pWDICtx->wptMutex);
15285
15286 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 --------------------------------------------------------------------------*/
15289 if ( WDI_STATUS_SUCCESS != wdiStatus )
15290 {
15291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15292 "Failed to stop the device with status %s (%d)",
15293 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15294 halMacStopRspMsg.stopRspParams.status);
15295
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15297
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015301
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15303
15304 /*Transition now as WDI may get preempted imediately after it sends
15305 up the Stop Response and it will not get to process the state transition
15306 from Main Rsp function*/
15307 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15308 wpalMutexRelease(&pWDICtx->wptMutex);
15309
15310 /*! TO DO: - STOP the Data transport */
15311
15312 /*Notify UMAC*/
15313 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15314
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015316}/*WDI_ProcessStopRsp*/
15317
15318/**
15319 @brief Process Close Rsp function (called when a response
15320 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015321
15322 @param pWDICtx: pointer to the WLAN DAL context
15323 pEventData: pointer to the event information structure
15324
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 @see
15326 @return Result of the function call
15327*/
15328WDI_Status
15329WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015330(
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 WDI_ControlBlockType* pWDICtx,
15332 WDI_EventInfoType* pEventData
15333)
15334{
15335 /*There is no close response comming from HAL - function just kept for
15336 simmetry */
15337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015339}/*WDI_ProcessCloseRsp*/
15340
15341
15342/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015344============================================================================*/
15345
15346/**
15347 @brief Process Init Scan Rsp function (called when a response
15348 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015349
15350 @param pWDICtx: pointer to the WLAN DAL context
15351 pEventData: pointer to the event information structure
15352
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 @see
15354 @return Result of the function call
15355*/
15356WDI_Status
15357WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015358(
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 WDI_ControlBlockType* pWDICtx,
15360 WDI_EventInfoType* pEventData
15361)
15362{
15363 WDI_Status wdiStatus;
15364 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015366 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15368
15369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 -------------------------------------------------------------------------*/
15372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15373 ( NULL == pEventData->pEventData))
15374 {
15375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 }
15380
15381 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15382 if( NULL == wdiInitScanRspCb)
15383 {
15384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015385 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 }
15389
15390 /*-------------------------------------------------------------------------
15391 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15395 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 sizeof(halInitScanRspMsg.initScanRspParams));
15397
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015399
15400 if ( pWDICtx->bInBmps )
15401 {
15402 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015403 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15404 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015406 "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 -080015407 WDI_ASSERT(0);
15408 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015409 }
15410
15411 /*Notify UMAC*/
15412 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15413
Jeff Johnsone7245742012-09-05 17:12:55 -070015414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415}/*WDI_ProcessInitScanRsp*/
15416
15417
15418/**
15419 @brief Process Start Scan Rsp function (called when a response
15420 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015421
15422 @param pWDICtx: pointer to the WLAN DAL context
15423 pEventData: pointer to the event information structure
15424
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 @see
15426 @return Result of the function call
15427*/
15428WDI_Status
15429WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015430(
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 WDI_ControlBlockType* pWDICtx,
15432 WDI_EventInfoType* pEventData
15433)
15434{
15435 WDI_StartScanRspParamsType wdiStartScanParams;
15436 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015437
15438 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15440
15441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 -------------------------------------------------------------------------*/
15444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15445 ( NULL == pEventData->pEventData))
15446 {
15447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 }
15452
15453 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15454 if( NULL == wdiStartScanRspCb)
15455 {
15456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015457 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 }
15461
15462 /*-------------------------------------------------------------------------
15463 Extract response and send it to UMAC
15464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15466 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 sizeof(halStartScanRspMsg.startScanRspParams));
15468
15469 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15470 halStartScanRspMsg.startScanRspParams.status);
15471#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 halStartScanRspMsg.startScanRspParams.startTSF,
15476 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015477#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015478
15479 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15480 {
15481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15482 "Start scan failed with status %s (%d)",
15483 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15484 halStartScanRspMsg.startScanRspParams.status);
15485 /* send the status to UMAC, don't return from here*/
15486 }
15487
15488 /*Notify UMAC*/
15489 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15490
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015492
15493}/*WDI_ProcessStartScanRsp*/
15494
15495
15496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015499
15500 @param pWDICtx: pointer to the WLAN DAL context
15501 pEventData: pointer to the event information structure
15502
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 @see
15504 @return Result of the function call
15505*/
15506WDI_Status
15507WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015508(
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 WDI_ControlBlockType* pWDICtx,
15510 WDI_EventInfoType* pEventData
15511)
15512{
15513 WDI_Status wdiStatus;
15514 tHalEndScanRspMsg halEndScanRspMsg;
15515 WDI_EndScanRspCb wdiEndScanRspCb;
15516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15517
15518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 -------------------------------------------------------------------------*/
15521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15522 ( NULL == pEventData->pEventData))
15523 {
15524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 }
15529
15530 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15531
15532 /*-------------------------------------------------------------------------
15533 Extract response and send it to UMAC
15534 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15536 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 sizeof(halEndScanRspMsg.endScanRspParams));
15538
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015540
15541 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15542 {
15543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15544 "End Scan failed with status %s (%d )",
15545 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15546 halEndScanRspMsg.endScanRspParams.status);
15547 /* send the status to UMAC, don't return from here*/
15548 }
15549
15550 /*Notify UMAC*/
15551 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15552
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015554}/*WDI_ProcessEndScanRsp*/
15555
15556
15557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015560
15561 @param pWDICtx: pointer to the WLAN DAL context
15562 pEventData: pointer to the event information structure
15563
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 @see
15565 @return Result of the function call
15566*/
15567WDI_Status
15568WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015569(
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 WDI_ControlBlockType* pWDICtx,
15571 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015572)
Jeff Johnson295189b2012-06-20 16:38:30 -070015573{
15574 WDI_Status wdiStatus;
15575 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015576
15577 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15579
15580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 -------------------------------------------------------------------------*/
15583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15584 ( NULL == pEventData->pEventData))
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 }
15591
15592 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15593
15594 /*-------------------------------------------------------------------------
15595 Extract response and send it to UMAC
15596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15598 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15600
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015602
15603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 halFinishScanRspMsg.finishScanRspParams.status);
15606
15607 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15608 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15609 {
15610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15611 "Finish Scan failed with status %s (%d)",
15612 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15613 halFinishScanRspMsg.finishScanRspParams.status);
15614 /* send the status to UMAC, don't return from here*/
15615 }
15616
15617 /*Notify UMAC*/
15618 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15619
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015621}/*WDI_ProcessFinishScanRsp*/
15622
15623/**
15624 @brief Process Join Response function (called when a response
15625 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015626
15627 @param pWDICtx: pointer to the WLAN DAL context
15628 pEventData: pointer to the event information structure
15629
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 @see
15631 @return Result of the function call
15632*/
15633WDI_Status
15634WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015635(
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 WDI_ControlBlockType* pWDICtx,
15637 WDI_EventInfoType* pEventData
15638)
15639{
15640 WDI_Status wdiStatus;
15641 WDI_JoinRspCb wdiJoinRspCb;
15642 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643
15644 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15646
15647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 -------------------------------------------------------------------------*/
15650 if (( NULL == pWDICtx ) ||
15651 ( NULL == pWDICtx->pfncRspCB ) ||
15652 ( NULL == pEventData ) ||
15653 ( NULL == pEventData->pEventData))
15654 {
15655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 }
15660
15661 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15662
15663 /*-------------------------------------------------------------------------
15664 Extract response and send it to UMAC
15665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15667 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 sizeof(halJoinRspMsg.joinRspParams));
15669
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015671
15672 wpalMutexAcquire(&pWDICtx->wptMutex);
15673
15674 /*-----------------------------------------------------------------------
15675 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15680 {
15681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15683 "association no longer in progress %d - mysterious HAL response",
15684 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015685
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 }
15690
15691 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15692
15693 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 -----------------------------------------------------------------------*/
15696 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15697 {
15698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15699 "Join only allowed in Joining state - failure state is %d "
15700 "strange HAL response", pBSSSes->wdiAssocState);
15701
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15703
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 }
15707
15708
15709 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 -----------------------------------------------------------------------*/
15712 if ( WDI_STATUS_SUCCESS != wdiStatus )
15713 {
15714 /*Association was failed by HAL - remove session*/
15715 WDI_DeleteSession(pWDICtx, pBSSSes);
15716
15717 /*Association no longer in progress */
15718 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15719
15720 /*Association no longer in progress - prepare pending assoc for processing*/
15721 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015722
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 }
15724 else
15725 {
15726 /*Transition to state Joining - this may be redundant as we are supposed
15727 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 }
15730
15731 wpalMutexRelease(&pWDICtx->wptMutex);
15732
15733 /*Notify UMAC*/
15734 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15735
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015737}/*WDI_ProcessJoinRsp*/
15738
15739
15740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015743
15744 @param pWDICtx: pointer to the WLAN DAL context
15745 pEventData: pointer to the event information structure
15746
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 @see
15748 @return Result of the function call
15749*/
15750WDI_Status
15751WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015752(
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 WDI_ControlBlockType* pWDICtx,
15754 WDI_EventInfoType* pEventData
15755)
15756{
15757 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15758 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 WDI_BSSSessionType* pBSSSes = NULL;
15761
Jeff Johnsone7245742012-09-05 17:12:55 -070015762 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15764 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015765
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15767
15768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 -------------------------------------------------------------------------*/
15771 if (( NULL == pEventData ) ||
15772 ( NULL == pEventData->pEventData))
15773 {
15774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 }
15779
15780 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15781
15782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15786 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 sizeof(halConfigBssRspMsg.configBssRspParams));
15788
15789 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15790 halConfigBssRspMsg.configBssRspParams.status);
15791 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15792 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15795 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015796
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015798
15799 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801
15802 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015804
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015806
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15810 #endif
15811 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15812 halConfigBssRspMsg.configBssRspParams.staMac,
15813 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015814
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 wpalMutexAcquire(&pWDICtx->wptMutex);
15816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15820 wdiConfigBSSParams.macBSSID,
15821 &pBSSSes);
15822
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 /*-----------------------------------------------------------------------
15824 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 -----------------------------------------------------------------------*/
15827 if ( NULL == pBSSSes )
15828 {
15829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15830 "Association sequence for this BSS does not yet exist "
15831 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015832
15833 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15834
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015838
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 /*Save data for this BSS*/
15840 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15841 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15852 pBSSSes->bcastStaIdx =
15853 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015856
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 /*-------------------------------------------------------------------------
15858 Add Peer STA
15859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15862 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015863
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 wdiAddSTAParam.ucHTCapable =
15868 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15869 wdiAddSTAParam.ucStaType =
15870 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15871
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15874 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015876
15877 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15878 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15879 WDI_MAC_ADDR_LEN);
15880
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15896 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015897
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15899 /*-------------------------------------------------------------------------
15900 Add Broadcast STA only in AP mode
15901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015903 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 {
15905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15906 "Add BCAST STA to table for index: %d",
15907 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015908
15909 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015911
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15913 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15914 }
15915 wpalMutexRelease(&pWDICtx->wptMutex);
15916 }
15917 else
15918 {
15919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15920 "Config BSS RSP failed with status : %s(%d)",
15921 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 halConfigBssRspMsg.configBssRspParams.status);
15924
Jeff Johnsone7245742012-09-05 17:12:55 -070015925
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 /*Association was failed by HAL - remove session*/
15927 WDI_DeleteSession(pWDICtx, pBSSSes);
15928
15929 /*Association no longer in progress */
15930 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15931
15932 /*Association no longer in progress - prepare pending assoc for processing*/
15933 WDI_DequeueAssocRequest(pWDICtx);
15934
15935 }
15936
15937 /*Notify UMAC*/
15938 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15939
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015941}/*WDI_ProcessConfigBSSRsp*/
15942
15943
15944/**
15945 @brief Process Del BSS Response function (called when a response
15946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015947
15948 @param pWDICtx: pointer to the WLAN DAL context
15949 pEventData: pointer to the event information structure
15950
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 @see
15952 @return Result of the function call
15953*/
15954WDI_Status
15955WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015956(
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 WDI_ControlBlockType* pWDICtx,
15958 WDI_EventInfoType* pEventData
15959)
15960{
15961 WDI_DelBSSRspParamsType wdiDelBSSParams;
15962 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 WDI_BSSSessionType* pBSSSes = NULL;
15965
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15968
15969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 -------------------------------------------------------------------------*/
15972 if (( NULL == pEventData ) ||
15973 ( NULL == pEventData->pEventData))
15974 {
15975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 }
15980
15981 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15982
15983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15987 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 sizeof(halDelBssRspMsg.deleteBssRspParams));
15989
15990
15991 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015993
15994 wpalMutexAcquire(&pWDICtx->wptMutex);
15995
15996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16000 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16001 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016002
16003 /*-----------------------------------------------------------------------
16004 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016005 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 -----------------------------------------------------------------------*/
16007 if ( NULL == pBSSSes )
16008 {
16009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16010 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016011 "association no longer in progress - mysterious HAL response");
16012
16013 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16014
16015 wpalMutexRelease(&pWDICtx->wptMutex);
16016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016018
16019 /*Extract BSSID for the response to UMAC*/
16020 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16021 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16022
16023 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16024
16025 /*-----------------------------------------------------------------------
16026 The current session will be deleted
16027 -----------------------------------------------------------------------*/
16028 WDI_DeleteSession(pWDICtx, pBSSSes);
16029
16030
16031 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016032 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16033 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016035 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016036 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016037
16038 /* Delete the STA's in this BSS */
16039 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16040
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 wpalMutexRelease(&pWDICtx->wptMutex);
16042
16043 /*Notify UMAC*/
16044 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16045
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016047}/*WDI_ProcessDelBSSRsp*/
16048
16049/**
16050 @brief Process Post Assoc Rsp function (called when a response
16051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016052
16053 @param pWDICtx: pointer to the WLAN DAL context
16054 pEventData: pointer to the event information structure
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 @see
16057 @return Result of the function call
16058*/
16059WDI_Status
16060WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016061(
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 WDI_ControlBlockType* pWDICtx,
16063 WDI_EventInfoType* pEventData
16064)
16065{
16066 WDI_PostAssocRspParamsType wdiPostAssocParams;
16067 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016068 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16072
16073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 -------------------------------------------------------------------------*/
16076 if (( NULL == pEventData ) ||
16077 ( NULL == pEventData->pEventData))
16078 {
16079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 }
16084
16085 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16086
16087 /*-------------------------------------------------------------------------
16088 Extract response and send it to UMAC
16089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16091 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 sizeof(halPostAssocRspMsg.postAssocRspParams));
16093
16094 /*Extract the Post Assoc STA Params */
16095
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16102
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 wdiPostAssocParams.wdiStatus =
16104 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016105
16106 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16107 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16109 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 WDI_MAC_ADDR_LEN);
16111
16112 /* Extract Post Assoc BSS Params */
16113
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16115 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16116 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016117
16118 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16119 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016120 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16122 .macSTA, WDI_MAC_ADDR_LEN);
16123
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16126
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16129
16130 wdiPostAssocParams.bssParams.ucBSSIdx =
16131 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16132
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16135
16136 wpalMutexAcquire(&pWDICtx->wptMutex);
16137
16138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016144
16145 /*-----------------------------------------------------------------------
16146 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 -----------------------------------------------------------------------*/
16149 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16152 {
16153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16154 "Association sequence for this BSS does not yet exist or "
16155 "association no longer in progress - mysterious HAL response");
16156
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16158
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 }
16162
16163 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 -----------------------------------------------------------------------*/
16166 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16167 {
16168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16169 "Post Assoc not allowed before JOIN - failing request "
16170 "strange HAL response");
16171
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16173
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 }
16177
16178 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 -----------------------------------------------------------------------*/
16181 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16182 {
16183 /*Association was failed by HAL - remove session*/
16184 WDI_DeleteSession(pWDICtx, pBSSSes);
16185 }
16186 else
16187 {
16188 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016190
16191 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16200
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16203 }
16204
16205 /*Association no longer in progress */
16206 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16207
16208 /*Association no longer in progress - prepare pending assoc for processing*/
16209 WDI_DequeueAssocRequest(pWDICtx);
16210
16211 wpalMutexRelease(&pWDICtx->wptMutex);
16212
16213 /*Notify UMAC*/
16214 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16215
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016217}/*WDI_ProcessPostAssocRsp*/
16218
16219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016222
16223 @param pWDICtx: pointer to the WLAN DAL context
16224 pEventData: pointer to the event information structure
16225
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 @see
16227 @return Result of the function call
16228*/
16229WDI_Status
16230WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016231(
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 WDI_ControlBlockType* pWDICtx,
16233 WDI_EventInfoType* pEventData
16234)
16235{
16236 WDI_DelSTARspParamsType wdiDelSTARsp;
16237 WDI_DelSTARspCb wdiDelSTARspCb;
16238 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16241
16242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 -------------------------------------------------------------------------*/
16245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16246 ( NULL == pEventData->pEventData))
16247 {
16248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 }
16253
16254 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16255
16256 /*-------------------------------------------------------------------------
16257 Extract response and send it to UMAC
16258 -------------------------------------------------------------------------*/
16259 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 sizeof(halDelStaRspMsg.delStaRspParams));
16262
16263 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wdiDelSTARsp.wdiStatus =
16265 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016266
16267 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16268
16269 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16270 if(staType == WDI_STA_ENTRY_SELF)
16271 {
16272 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16273
16274 /* At this point add the self-STA */
16275
16276 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16277 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16278 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16279
16280#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16281#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16282
16283 //all DPU indices are the same for self STA
16284 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16285 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16289 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016290
16291 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 }
16293 else
16294 {
16295 //Delete the station in the table
16296 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16297 }
16298
16299 /*Notify UMAC*/
16300 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16301
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303}/*WDI_ProcessDelSTARsp*/
16304
16305
16306/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016308==========================================================================*/
16309
16310/**
16311 @brief Process Set BSS Key Rsp function (called when a response
16312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016313
16314 @param pWDICtx: pointer to the WLAN DAL context
16315 pEventData: pointer to the event information structure
16316
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 @see
16318 @return Result of the function call
16319*/
16320WDI_Status
16321WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016322(
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 WDI_ControlBlockType* pWDICtx,
16324 WDI_EventInfoType* pEventData
16325)
16326{
16327 WDI_Status wdiStatus;
16328 eHalStatus halStatus;
16329 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16331
16332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 -------------------------------------------------------------------------*/
16335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16336 ( NULL == pEventData->pEventData))
16337 {
16338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 }
16343
16344 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16345
16346 /*-------------------------------------------------------------------------
16347 Extract response and send it to UMAC
16348 -------------------------------------------------------------------------*/
16349 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016351
16352 if ( eHAL_STATUS_SUCCESS != halStatus )
16353 {
16354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16355 "Set BSS Key failed with status %s (%d)",
16356 WDI_getHALStatusMsgString(halStatus),
16357 halStatus);
16358 /* send the status to UMAC, don't return from here*/
16359 }
16360
16361 /*Notify UMAC*/
16362 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16363
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016365}/*WDI_ProcessSetBssKeyRsp*/
16366
16367/**
16368 @brief Process Remove BSS Key Rsp function (called when a response
16369 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016370
16371 @param pWDICtx: pointer to the WLAN DAL context
16372 pEventData: pointer to the event information structure
16373
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 @see
16375 @return Result of the function call
16376*/
16377WDI_Status
16378WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016379(
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 WDI_ControlBlockType* pWDICtx,
16381 WDI_EventInfoType* pEventData
16382)
16383{
16384 WDI_Status wdiStatus;
16385 eHalStatus halStatus;
16386 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16388
16389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016391 -------------------------------------------------------------------------*/
16392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16393 ( NULL == pEventData->pEventData))
16394 {
16395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 }
16400
16401 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16402
16403 /*-------------------------------------------------------------------------
16404 Extract response and send it to UMAC
16405 -------------------------------------------------------------------------*/
16406 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016408
16409 if ( eHAL_STATUS_SUCCESS != halStatus )
16410 {
16411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16412 "Remove BSS Key failed with status %s (%d )",
16413 WDI_getHALStatusMsgString(halStatus),
16414 halStatus);
16415 /* send the status to UMAC, don't return from here*/
16416 }
16417
16418 /*Notify UMAC*/
16419 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16420
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016422}/*WDI_ProcessSetBssKeyRsp*/
16423
16424
16425/**
16426 @brief Process Set STA Key Rsp function (called when a response
16427 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016428
16429 @param pWDICtx: pointer to the WLAN DAL context
16430 pEventData: pointer to the event information structure
16431
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 @see
16433 @return Result of the function call
16434*/
16435WDI_Status
16436WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016437(
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 WDI_ControlBlockType* pWDICtx,
16439 WDI_EventInfoType* pEventData
16440)
16441{
16442 WDI_Status wdiStatus;
16443 eHalStatus halStatus;
16444 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16446
16447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 -------------------------------------------------------------------------*/
16450 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16451 ( NULL == pEventData->pEventData))
16452 {
16453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 }
16458
16459 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16460
16461 /*-------------------------------------------------------------------------
16462 Extract response and send it to UMAC
16463 -------------------------------------------------------------------------*/
16464 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016466
16467 if ( eHAL_STATUS_SUCCESS != halStatus )
16468 {
16469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16470 "Set STA Key failed with status %s (%d)",
16471 WDI_getHALStatusMsgString(halStatus),
16472 halStatus);
16473 /* send the status to UMAC, don't return from here*/
16474 }
16475
16476 /*Notify UMAC*/
16477 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16478
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016480}/*WDI_ProcessSetSTAKeyRsp*/
16481
16482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016485
16486 @param pWDICtx: pointer to the WLAN DAL context
16487 pEventData: pointer to the event information structure
16488
Jeff Johnson295189b2012-06-20 16:38:30 -070016489 @see
16490 @return Result of the function call
16491*/
16492WDI_Status
16493WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016494(
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 WDI_ControlBlockType* pWDICtx,
16496 WDI_EventInfoType* pEventData
16497)
16498{
16499 WDI_Status wdiStatus;
16500 eHalStatus halStatus;
16501 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16503
16504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 -------------------------------------------------------------------------*/
16507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16508 ( NULL == pEventData->pEventData))
16509 {
16510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 }
16515
16516 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16517
16518 /*-------------------------------------------------------------------------
16519 Extract response and send it to UMAC
16520 -------------------------------------------------------------------------*/
16521 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016523
16524 if ( eHAL_STATUS_SUCCESS != halStatus )
16525 {
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16527 "Remove STA Key failed with status %s (%d)",
16528 WDI_getHALStatusMsgString(halStatus),
16529 halStatus);
16530 /* send the status to UMAC, don't return from here*/
16531 }
16532
16533 /*Notify UMAC*/
16534 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16535
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016537}/*WDI_ProcessRemoveStaKeyRsp*/
16538
16539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016540 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016542
16543 @param pWDICtx: pointer to the WLAN DAL context
16544 pEventData: pointer to the event information structure
16545
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 @see
16547 @return Result of the function call
16548*/
16549WDI_Status
16550WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016551(
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 WDI_ControlBlockType* pWDICtx,
16553 WDI_EventInfoType* pEventData
16554)
16555{
16556 WDI_Status wdiStatus;
16557 eHalStatus halStatus;
16558 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16560
16561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 -------------------------------------------------------------------------*/
16564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16565 ( NULL == pEventData->pEventData))
16566 {
16567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 }
16572
16573 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16574
16575 /*-------------------------------------------------------------------------
16576 Extract response and send it to UMAC
16577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 wpalMemoryCopy( &halStatus,
16579 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 sizeof(halStatus));
16581
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016583
16584 if ( eHAL_STATUS_SUCCESS != halStatus )
16585 {
16586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16587 "Set STA Key failed with status %s (%d)",
16588 WDI_getHALStatusMsgString(halStatus),
16589 halStatus);
16590 /* send the status to UMAC, don't return from here*/
16591 }
16592
16593 /*Notify UMAC*/
16594 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16595
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016597}/*WDI_ProcessSetSTABcastKeyRsp*/
16598
16599/**
16600 @brief Process Remove STA Bcast Key Rsp function (called when a
16601 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016602
16603 @param pWDICtx: pointer to the WLAN DAL context
16604 pEventData: pointer to the event information structure
16605
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 @see
16607 @return Result of the function call
16608*/
16609WDI_Status
16610WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016611(
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 WDI_ControlBlockType* pWDICtx,
16613 WDI_EventInfoType* pEventData
16614)
16615{
16616 WDI_Status wdiStatus;
16617 eHalStatus halStatus;
16618 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16620
16621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 -------------------------------------------------------------------------*/
16624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16625 ( NULL == pEventData->pEventData))
16626 {
16627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 }
16632
16633 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16634
16635 /*-------------------------------------------------------------------------
16636 Extract response and send it to UMAC
16637 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 wpalMemoryCopy( &halStatus,
16639 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 sizeof(halStatus));
16641
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016643
16644 if ( eHAL_STATUS_SUCCESS != halStatus )
16645 {
16646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16647 "Remove STA Key failed with status %s (%d)",
16648 WDI_getHALStatusMsgString(halStatus),
16649 halStatus);
16650 /* send the status to UMAC, don't return from here*/
16651 }
16652
16653 /*Notify UMAC*/
16654 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16655
Jeff Johnsone7245742012-09-05 17:12:55 -070016656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016657}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16658
16659
16660/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016661 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016662==========================================================================*/
16663
16664/**
16665 @brief Process Add TSpec Rsp function (called when a response
16666 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016667
16668 @param pWDICtx: pointer to the WLAN DAL context
16669 pEventData: pointer to the event information structure
16670
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 @see
16672 @return Result of the function call
16673*/
16674WDI_Status
16675WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016676(
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 WDI_ControlBlockType* pWDICtx,
16678 WDI_EventInfoType* pEventData
16679)
16680{
16681 WDI_Status wdiStatus;
16682 eHalStatus halStatus;
16683 WDI_AddTsRspCb wdiAddTsRspCb;
16684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16685
16686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 -------------------------------------------------------------------------*/
16689 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16690 ( NULL == pEventData->pEventData))
16691 {
16692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 }
16697
16698 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16699
16700 /*-------------------------------------------------------------------------
16701 Extract response and send it to UMAC
16702 -------------------------------------------------------------------------*/
16703 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016704 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016705
16706 /*Notify UMAC*/
16707 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16708
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016710}/*WDI_ProcessAddTSpecRsp*/
16711
16712
16713/**
16714 @brief Process Del TSpec Rsp function (called when a response
16715 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016716
16717 @param pWDICtx: pointer to the WLAN DAL context
16718 pEventData: pointer to the event information structure
16719
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 @see
16721 @return Result of the function call
16722*/
16723WDI_Status
16724WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016725(
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 WDI_ControlBlockType* pWDICtx,
16727 WDI_EventInfoType* pEventData
16728)
16729{
16730 WDI_Status wdiStatus;
16731 eHalStatus halStatus;
16732 WDI_DelTsRspCb wdiDelTsRspCb;
16733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16734
16735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 -------------------------------------------------------------------------*/
16738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16739 ( NULL == pEventData->pEventData))
16740 {
16741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 }
16746
16747 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16748
16749 /*-------------------------------------------------------------------------
16750 Extract response and send it to UMAC
16751 -------------------------------------------------------------------------*/
16752 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016754
16755 /*Notify UMAC*/
16756 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16757
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016759}/*WDI_ProcessDelTSpecRsp*/
16760
16761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016764
16765 @param pWDICtx: pointer to the WLAN DAL context
16766 pEventData: pointer to the event information structure
16767
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 @see
16769 @return Result of the function call
16770*/
16771WDI_Status
16772WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016773(
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 WDI_ControlBlockType* pWDICtx,
16775 WDI_EventInfoType* pEventData
16776)
16777{
16778 WDI_Status wdiStatus;
16779 eHalStatus halStatus;
16780 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16782
16783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 -------------------------------------------------------------------------*/
16786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16787 ( NULL == pEventData->pEventData))
16788 {
16789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 }
16794
16795 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16796
16797 /*-------------------------------------------------------------------------
16798 Extract response and send it to UMAC
16799 -------------------------------------------------------------------------*/
16800 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016802
16803 /*Notify UMAC*/
16804 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16805
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016807}/*WDI_ProcessUpdateEDCAParamsRsp*/
16808
16809
16810/**
16811 @brief Process Add BA Rsp function (called when a response
16812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016813
16814 @param pWDICtx: pointer to the WLAN DAL context
16815 pEventData: pointer to the event information structure
16816
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 @see
16818 @return Result of the function call
16819*/
16820WDI_Status
16821WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016822(
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 WDI_ControlBlockType* pWDICtx,
16824 WDI_EventInfoType* pEventData
16825)
16826{
16827 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16828
16829 tAddBASessionRspParams halBASessionRsp;
16830 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16831
Jeff Johnsone7245742012-09-05 17:12:55 -070016832
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16834
16835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 -------------------------------------------------------------------------*/
16838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16839 ( NULL == pEventData->pEventData))
16840 {
16841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 }
16846
16847 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16848
16849 /*-------------------------------------------------------------------------
16850 Extract response and send it to UMAC
16851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 wpalMemoryCopy( &halBASessionRsp,
16853 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 sizeof(halBASessionRsp));
16855
16856 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16857
Jeff Johnson43971f52012-07-17 12:26:56 -070016858 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 {
16860 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16861 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16862 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16863 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16864 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16865 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16866 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16867 }
16868
16869 /*Notify UMAC*/
16870 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16871
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016873}/*WDI_ProcessAddSessionBARsp*/
16874
16875
16876/**
16877 @brief Process Del BA Rsp function (called when a response
16878 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016879
16880 @param pWDICtx: pointer to the WLAN DAL context
16881 pEventData: pointer to the event information structure
16882
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 @see
16884 @return Result of the function call
16885*/
16886WDI_Status
16887WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016888(
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 WDI_ControlBlockType* pWDICtx,
16890 WDI_EventInfoType* pEventData
16891)
16892{
16893 WDI_Status wdiStatus;
16894 eHalStatus halStatus;
16895 WDI_DelBARspCb wdiDelBARspCb;
16896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16897
16898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 -------------------------------------------------------------------------*/
16901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16902 ( NULL == pEventData->pEventData))
16903 {
16904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 }
16909
16910 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16911
16912 /*-------------------------------------------------------------------------
16913 Extract response and send it to UMAC
16914 -------------------------------------------------------------------------*/
16915 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016917
16918 if ( eHAL_STATUS_SUCCESS == halStatus )
16919 {
16920 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16921 }
16922
16923 /*Notify UMAC*/
16924 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16925
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016927}/*WDI_ProcessDelBARsp*/
16928
16929#ifdef FEATURE_WLAN_CCX
16930/**
16931 @brief Process TSM Stats Rsp function (called when a response
16932 is being received over the bus from HAL)
16933
16934 @param pWDICtx: pointer to the WLAN DAL context
16935 pEventData: pointer to the event information structure
16936
16937 @see
16938 @return Result of the function call
16939*/
16940WDI_Status
16941WDI_ProcessTsmStatsRsp
16942(
16943 WDI_ControlBlockType* pWDICtx,
16944 WDI_EventInfoType* pEventData
16945)
16946{
16947 WDI_TsmRspCb wdiTsmStatsRspCb;
16948 tTsmStatsRspMsg halTsmStatsRspMsg;
16949 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16951
16952 /*-------------------------------------------------------------------------
16953 Sanity check
16954 -------------------------------------------------------------------------*/
16955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16956 ( NULL == pEventData->pEventData))
16957 {
16958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 WDI_ASSERT(0);
16961 return WDI_STATUS_E_FAILURE;
16962 }
16963
16964 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16965
16966 /*-------------------------------------------------------------------------
16967 Unpack HAL Response Message - the header was already extracted by the
16968 main Response Handling procedure
16969 -------------------------------------------------------------------------*/
16970 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16971 pEventData->pEventData,
16972 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16973
16974 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16975 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16976 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16977 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16978 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16979 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16980 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16981 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16982 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16983 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16984 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16985 halTsmStatsRspMsg.tsmStatsRspParams.status);
16986
16987 /*Notify UMAC*/
16988 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16989
16990 return WDI_STATUS_SUCCESS;
16991}/*WDI_ProcessTsmStatsRsp*/
16992
16993#endif
16994
16995
16996
16997/**
16998 @brief Process Flush AC Rsp function (called when a response
16999 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017000
17001 @param pWDICtx: pointer to the WLAN DAL context
17002 pEventData: pointer to the event information structure
17003
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 @see
17005 @return Result of the function call
17006*/
17007WDI_Status
17008WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017009(
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 WDI_ControlBlockType* pWDICtx,
17011 WDI_EventInfoType* pEventData
17012)
17013{
17014 WDI_Status wdiStatus;
17015 eHalStatus halStatus;
17016 WDI_FlushAcRspCb wdiFlushAcRspCb;
17017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17018
17019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 -------------------------------------------------------------------------*/
17022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17023 ( NULL == pEventData->pEventData))
17024 {
17025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 }
17030
17031 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17032
17033 /*-------------------------------------------------------------------------
17034 Extract response and send it to UMAC
17035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 wpalMemoryCopy( &halStatus,
17037 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 sizeof(halStatus));
17039
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017041
17042 /*Notify UMAC*/
17043 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17044
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017046}/*WDI_ProcessFlushAcRsp*/
17047
17048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017051
17052 @param pWDICtx: pointer to the WLAN DAL context
17053 pEventData: pointer to the event information structure
17054
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 @see
17056 @return Result of the function call
17057*/
17058WDI_Status
17059WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017060(
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 WDI_ControlBlockType* pWDICtx,
17062 WDI_EventInfoType* pEventData
17063)
17064{
17065 WDI_Status wdiStatus;
17066 eHalStatus halStatus;
17067 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17069
17070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 -------------------------------------------------------------------------*/
17073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17074 ( NULL == pEventData->pEventData))
17075 {
17076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 }
17081
17082 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17083
17084 /*-------------------------------------------------------------------------
17085 Extract response and send it to UMAC
17086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 wpalMemoryCopy( &halStatus,
17088 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 sizeof(halStatus));
17090
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017092
17093 /*Notify UMAC*/
17094 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17095
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017097}/*WDI_ProcessBtAmpEventRsp*/
17098
17099
17100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017103
17104 @param pWDICtx: pointer to the WLAN DAL context
17105 pEventData: pointer to the event information structure
17106
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 @see
17108 @return Result of the function call
17109*/
17110WDI_Status
17111WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017112(
Jeff Johnson295189b2012-06-20 16:38:30 -070017113 WDI_ControlBlockType* pWDICtx,
17114 WDI_EventInfoType* pEventData
17115)
17116{
17117 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17118 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17119 tAddStaSelfRspMsg halAddStaSelfRsp;
17120 WDI_AddStaParams wdiAddSTAParam = {0};
17121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17122
17123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 -------------------------------------------------------------------------*/
17126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17127 ( NULL == pEventData->pEventData))
17128 {
17129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 }
17134
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017136 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17137
17138 /*-------------------------------------------------------------------------
17139 Extract response and send it to UMAC
17140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017141 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17142 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17144
17145
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 wdiAddSTASelfParams.wdiStatus =
17147 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017148
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17155
17156 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17157 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17158 WDI_MAC_ADDR_LEN);
17159
17160
17161#ifdef HAL_SELF_STA_PER_BSS
17162
17163 /* At this point add the self-STA */
17164
17165 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17166 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17167 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17168
17169 //all DPU indices are the same for self STA
17170
17171 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17174 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17175 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17176 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17177 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17178
17179 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17180 WDI_MAC_ADDR_LEN);
17181
17182 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17183 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17184
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17187 {
17188 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17189 }
17190#endif
17191
17192 /*Notify UMAC*/
17193 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17194
Jeff Johnsone7245742012-09-05 17:12:55 -070017195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017196}/*WDI_ProcessAddSTASelfRsp*/
17197
17198
17199
17200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017201 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017202 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017203
17204 @param pWDICtx: pointer to the WLAN DAL context
17205 pEventData: pointer to the event information structure
17206
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 @see
17208 @return Result of the function call
17209*/
17210WDI_Status
17211WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017212(
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ControlBlockType* pWDICtx,
17214 WDI_EventInfoType* pEventData
17215)
17216{
17217 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17218 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17219 tDelStaSelfRspParams delStaSelfRspParams;
17220 wpt_uint8 ucStaIdx;
17221
17222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17223
17224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 -------------------------------------------------------------------------*/
17227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17228 ( NULL == pEventData->pEventData))
17229 {
17230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 }
17235
17236 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17237
17238 /*-------------------------------------------------------------------------
17239 Extract response and send it to UMAC
17240 -------------------------------------------------------------------------*/
17241
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 (wpt_uint8*)pEventData->pEventData,
17244 sizeof(tDelStaSelfRspParams));
17245
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 wdiDelStaSelfRspParams.wdiStatus =
17247 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017248
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17251 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17252 {
17253 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 delStaSelfRspParams.selfMacAddr,
17256 &ucStaIdx);
17257 if(WDI_STATUS_E_FAILURE == wdiStatus)
17258 {
17259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017260 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 }
17264 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17265 }
17266
17267 /*Notify UMAC*/
17268 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17269
17270 return WDI_STATUS_SUCCESS;
17271}
17272
Jeff Johnsone7245742012-09-05 17:12:55 -070017273#ifdef FEATURE_OEM_DATA_SUPPORT
17274/**
17275 @brief Start Oem Data Rsp function (called when a
17276 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017277
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 @param pWDICtx: pointer to the WLAN DAL context
17279 pEventData: pointer to the event information structure
17280
17281 @see
17282 @return Result of the function call
17283*/
17284#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17285
17286WDI_Status
17287WDI_ProcessStartOemDataRsp
17288(
17289 WDI_ControlBlockType* pWDICtx,
17290 WDI_EventInfoType* pEventData
17291)
17292{
17293 WDI_oemDataRspCb wdiOemDataRspCb;
17294 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17295 tStartOemDataRspParams* halStartOemDataRspParams;
17296
17297 /*-------------------------------------------------------------------------
17298 Sanity check
17299 -------------------------------------------------------------------------*/
17300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17301 ( NULL == pEventData->pEventData))
17302 {
17303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017304 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017305 WDI_ASSERT(0);
17306 return WDI_STATUS_E_FAILURE;
17307 }
17308
17309 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17310
17311 /*-------------------------------------------------------------------------
17312 Extract response and send it to UMAC
17313 -------------------------------------------------------------------------*/
17314 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17315
17316
17317 //It is the responsibility of the application code to check for failure
17318 //conditions!
17319
17320 //Allocate memory for WDI OEM DATA RSP structure
17321 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17322
17323 if(NULL == wdiOemDataRspParams)
17324 {
17325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017326 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017327 pWDICtx, pEventData, pEventData->pEventData);
17328 WDI_ASSERT(0);
17329 return WDI_STATUS_E_FAILURE;
17330 }
17331
17332 /* Populate WDI structure members */
17333 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17334
17335 /*Notify UMAC*/
17336 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17337
17338 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17339 wpalMemoryFree(wdiOemDataRspParams);
17340
17341 return WDI_STATUS_SUCCESS;
17342}/*WDI_PrcoessStartOemDataRsp*/
17343#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017344
17345/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017346 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017347===========================================================================*/
17348
17349/**
17350 @brief Process Channel Switch Rsp function (called when a response
17351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017352
17353 @param pWDICtx: pointer to the WLAN DAL context
17354 pEventData: pointer to the event information structure
17355
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 @see
17357 @return Result of the function call
17358*/
17359WDI_Status
17360WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017361(
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 WDI_ControlBlockType* pWDICtx,
17363 WDI_EventInfoType* pEventData
17364)
17365{
17366 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17367 WDI_SwitchChRspCb wdiChSwitchRspCb;
17368 tSwitchChannelRspParams halSwitchChannelRsp;
17369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17370
17371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 -------------------------------------------------------------------------*/
17374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17375 ( NULL == pEventData->pEventData))
17376 {
17377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 }
17382
17383 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17384
17385 /*-------------------------------------------------------------------------
17386 Extract response and send it to UMAC
17387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 (wpt_uint8*)pEventData->pEventData,
17390 sizeof(halSwitchChannelRsp));
17391
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 wdiSwitchChRsp.wdiStatus =
17393 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17395
17396#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017398#endif
17399
17400 /*Notify UMAC*/
17401 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17402
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017404}/*WDI_ProcessChannelSwitchRsp*/
17405
17406
17407/**
17408 @brief Process Config STA Rsp function (called when a response
17409 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017410
17411 @param pWDICtx: pointer to the WLAN DAL context
17412 pEventData: pointer to the event information structure
17413
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 @see
17415 @return Result of the function call
17416*/
17417WDI_Status
17418WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017419(
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 WDI_ControlBlockType* pWDICtx,
17421 WDI_EventInfoType* pEventData
17422)
17423{
17424 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17425 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17426 WDI_AddStaParams wdiAddSTAParam;
17427
17428 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17433
17434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 -------------------------------------------------------------------------*/
17437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17438 ( NULL == pEventData->pEventData))
17439 {
17440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 }
17445
17446 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17447
17448 /*-------------------------------------------------------------------------
17449 Extract response and send it to UMAC
17450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17452 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 sizeof(halConfigStaRsp.configStaRspParams));
17454
17455
17456 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17457 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17458 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17459 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17460 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17461
17462 /* MAC Address of STA - take from cache as it does not come back in the
17463 response*/
17464 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017467
17468 wdiCfgSTAParams.wdiStatus =
17469 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017470
17471 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17472 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17473 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17474
17475 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17476 {
17477 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17478 {
17479 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17482 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017483
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 wdiAddSTAParam.ucHTCapable =
17488 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17489 wdiAddSTAParam.ucStaType =
17490 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017491 wdiAddSTAParam.ucRmfEnabled =
17492 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017493
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17496 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498
17499 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17500 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17501 WDI_MAC_ADDR_LEN);
17502
17503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17504 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17505 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017506
17507 if ( NULL == pBSSSes )
17508 {
17509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17510 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017511
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 }
17515
17516 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017517 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017526
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17528 }
17529 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17530 {
17531 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17532
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 halConfigStaRsp.configStaRspParams.ucUcastSig;
17547 }
17548 }
17549
17550 /*Notify UMAC*/
17551 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17552
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554}/*WDI_ProcessConfigStaRsp*/
17555
17556
17557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017560
17561 @param pWDICtx: pointer to the WLAN DAL context
17562 pEventData: pointer to the event information structure
17563
Jeff Johnson295189b2012-06-20 16:38:30 -070017564 @see
17565 @return Result of the function call
17566*/
17567WDI_Status
17568WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017569(
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 WDI_ControlBlockType* pWDICtx,
17571 WDI_EventInfoType* pEventData
17572)
17573{
17574 WDI_Status wdiStatus;
17575 eHalStatus halStatus;
17576 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17577
17578 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17581
17582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 -------------------------------------------------------------------------*/
17585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17586 ( NULL == pEventData->pEventData))
17587 {
17588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 }
17593
17594 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17595
17596 wpalMutexAcquire(&pWDICtx->wptMutex);
17597
17598 /*If the link is being transitioned to idle - the BSS is to be deleted
17599 - this type of ending a session is possible when UMAC has failed an
17600 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17603 {
17604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17608 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17609 &pBSSSes);
17610
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 /*-----------------------------------------------------------------------
17612 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017614 -----------------------------------------------------------------------*/
17615 if ( NULL == pBSSSes )
17616 {
17617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17618 "Set link response received outside association session");
17619 }
17620 else
17621 {
17622 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17623 will be del BSS coming after this to stop the beaconing & cleaning up the
17624 sessions*/
17625 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17626 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17627 {
17628 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 -----------------------------------------------------------------------*/
17631 WDI_DeleteSession(pWDICtx, pBSSSes);
17632
17633 /*-----------------------------------------------------------------------
17634 Check to see if this association is in progress - if so disable the
17635 flag as this has ended
17636 -----------------------------------------------------------------------*/
17637 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017638 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 /*Association no longer in progress */
17640 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17641 /*Association no longer in progress - prepare pending assoc for processing*/
17642 WDI_DequeueAssocRequest(pWDICtx);
17643 }
17644 }
17645 }
17646 }
17647 /* If the link state has been set to POST ASSOC, reset the "association in
17648 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017649 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017650 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17651 {
17652 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17653 WDI_DequeueAssocRequest(pWDICtx);
17654 }
17655
17656 wpalMutexRelease(&pWDICtx->wptMutex);
17657
17658 /*-------------------------------------------------------------------------
17659 Extract response and send it to UMAC
17660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 wpalMemoryCopy( &halStatus,
17662 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017663 sizeof(halStatus));
17664
Jeff Johnsone7245742012-09-05 17:12:55 -070017665 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017666
17667 /*Notify UMAC*/
17668 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17669
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017671}/*WDI_ProcessSetLinkStateRsp*/
17672
17673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017674 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017676
17677 @param pWDICtx: pointer to the WLAN DAL context
17678 pEventData: pointer to the event information structure
17679
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 @see
17681 @return Result of the function call
17682*/
17683WDI_Status
17684WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017685(
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 WDI_ControlBlockType* pWDICtx,
17687 WDI_EventInfoType* pEventData
17688)
17689{
17690 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17691 WDI_GetStatsRspCb wdiGetStatsRspCb;
17692 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017693
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17695
17696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 -------------------------------------------------------------------------*/
17699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17700 ( NULL == pEventData->pEventData))
17701 {
17702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 }
17707
17708 /*-------------------------------------------------------------------------
17709 Extract response and send it to UMAC
17710 -------------------------------------------------------------------------*/
17711 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17712
17713 /*allocate the stats response buffer */
17714 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17715 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17716 + sizeof(WDI_GetStatsRspParamsType));
17717
17718 if(NULL == wdiGetStatsRsp)
17719 {
17720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017721 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 pWDICtx, pEventData, pEventData->pEventData);
17723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 }
17726
17727 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17728
17729 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17730 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17731 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17732 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17733 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17734 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17735
17736 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17737 wpalMemoryCopy(wdiGetStatsRsp + 1,
17738 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17739 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17740
17741 /*Notify UMAC*/
17742 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17743
17744 wpalMemoryFree(wdiGetStatsRsp);
17745
Jeff Johnsone7245742012-09-05 17:12:55 -070017746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017747}/*WDI_ProcessGetStatsRsp*/
17748
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017749#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17750/**
17751 @brief Process Get Roam Rssi Rsp function (called when a response is
17752 being received over the bus from HAL)
17753
17754 @param pWDICtx: pointer to the WLAN DAL context
17755 pEventData: pointer to the event information structure
17756
17757 @see
17758 @return Result of the function call
17759*/
17760WDI_Status
17761WDI_ProcessGetRoamRssiRsp
17762(
17763 WDI_ControlBlockType* pWDICtx,
17764 WDI_EventInfoType* pEventData
17765)
17766{
17767 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17768 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17769 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17771
17772 /*-------------------------------------------------------------------------
17773 Sanity check
17774 -------------------------------------------------------------------------*/
17775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17776 ( NULL == pEventData->pEventData))
17777 {
17778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17779 "%s: Invalid parameters", __func__);
17780 WDI_ASSERT(0);
17781 return WDI_STATUS_E_FAILURE;
17782 }
17783
17784 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17785 if(NULL == wdiGetRoamRssiRspCb)
17786 {
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17788 "%s: call back function is NULL", __func__);
17789 WDI_ASSERT(0);
17790 return WDI_STATUS_E_FAILURE;
17791 }
17792
17793 /*-------------------------------------------------------------------------
17794 Extract response and send it to UMAC
17795 -------------------------------------------------------------------------*/
17796 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17797 pEventData->pEventData,
17798 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17799
17800 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17801 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17802 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17803
17804 /*Notify UMAC*/
17805 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17806
17807 return WDI_STATUS_SUCCESS;
17808}/*WDI_ProcessGetRoamRssiRsp*/
17809#endif
17810
Jeff Johnson295189b2012-06-20 16:38:30 -070017811
17812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017813 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017814 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017815
17816 @param pWDICtx: pointer to the WLAN DAL context
17817 pEventData: pointer to the event information structure
17818
Jeff Johnson295189b2012-06-20 16:38:30 -070017819 @see
17820 @return Result of the function call
17821*/
17822WDI_Status
17823WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017824(
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 WDI_ControlBlockType* pWDICtx,
17826 WDI_EventInfoType* pEventData
17827)
17828{
17829 WDI_Status wdiStatus;
17830 eHalStatus halStatus;
17831 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17833
17834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 -------------------------------------------------------------------------*/
17837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17838 ( NULL == pEventData->pEventData))
17839 {
17840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 }
17845
17846 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17847
17848 /*-------------------------------------------------------------------------
17849 Extract response and send it to UMAC
17850 -------------------------------------------------------------------------*/
17851 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017853
17854 /*Notify UMAC*/
17855 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17856
Jeff Johnsone7245742012-09-05 17:12:55 -070017857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017858}/*WDI_ProcessUpdateCfgRsp*/
17859
17860
17861
17862/**
17863 @brief Process Add BA Rsp function (called when a response
17864 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017865
17866 @param pWDICtx: pointer to the WLAN DAL context
17867 pEventData: pointer to the event information structure
17868
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 @see
17870 @return Result of the function call
17871*/
17872WDI_Status
17873WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017874(
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 WDI_ControlBlockType* pWDICtx,
17876 WDI_EventInfoType* pEventData
17877)
17878{
17879 WDI_AddBARspCb wdiAddBARspCb;
17880
17881 tAddBARspParams halAddBARsp;
17882 WDI_AddBARspinfoType wdiAddBARsp;
17883
17884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17885
17886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 -------------------------------------------------------------------------*/
17889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17890 ( NULL == pEventData->pEventData))
17891 {
17892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 }
17897
17898 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17899
17900 /*-------------------------------------------------------------------------
17901 Extract response and send it to UMAC
17902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 wpalMemoryCopy( &halAddBARsp,
17904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 sizeof(halAddBARsp));
17906
17907 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17908
Jeff Johnson43971f52012-07-17 12:26:56 -070017909 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 {
17911 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17912 }
17913
17914 /*Notify UMAC*/
17915 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17916
Jeff Johnsone7245742012-09-05 17:12:55 -070017917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017918}/*WDI_ProcessAddSessionBARsp*/
17919
17920/**
17921 @brief Process Add BA Rsp function (called when a response
17922 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017923
17924 @param pWDICtx: pointer to the WLAN DAL context
17925 pEventData: pointer to the event information structure
17926
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 @see
17928 @return Result of the function call
17929*/
17930WDI_Status
17931WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017932(
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 WDI_ControlBlockType* pWDICtx,
17934 WDI_EventInfoType* pEventData
17935)
17936{
17937 WDI_TriggerBARspCb wdiTriggerBARspCb;
17938
17939 tTriggerBARspParams* halTriggerBARsp;
17940 tTriggerBaRspCandidate* halBaCandidate;
17941 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17942 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17943 wpt_uint16 index;
17944 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017945 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17947
17948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 -------------------------------------------------------------------------*/
17951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17952 ( NULL == pEventData->pEventData))
17953 {
17954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 }
17959
17960 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17961
17962 /*-------------------------------------------------------------------------
17963 Extract response and send it to UMAC
17964 -------------------------------------------------------------------------*/
17965 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17966
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017967 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17968
17969 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17970 {
17971 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017974
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017975 if(NULL == wdiTriggerBARsp)
17976 {
17977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017978 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017979 pWDICtx, pEventData, pEventData->pEventData);
17980 WDI_ASSERT(0);
17981 return WDI_STATUS_E_FAILURE;
17982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017983
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017984 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17985
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017987 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017988 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17989
17990 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17991 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17992
17993 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17994 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17997 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17998 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017999 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018000 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18003 }
18004 wdiTriggerBARspCandidate++;
18005 halBaCandidate++;
18006 }
18007 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018008 else
18009 {
18010 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18011
18012 if(NULL == wdiTriggerBARsp)
18013 {
18014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018015 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018016 pWDICtx, pEventData, pEventData->pEventData);
18017 WDI_ASSERT(0);
18018 return WDI_STATUS_E_FAILURE;
18019 }
18020
18021 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18022
18023 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018024
18025 /*Notify UMAC*/
18026 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18027
18028 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018030}/*WDI_ProcessAddSessionBARsp*/
18031
18032/**
18033 @brief Process Update Beacon Params Rsp function (called when a response
18034 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018035
18036 @param pWDICtx: pointer to the WLAN DAL context
18037 pEventData: pointer to the event information structure
18038
Jeff Johnson295189b2012-06-20 16:38:30 -070018039 @see
18040 @return Result of the function call
18041*/
18042WDI_Status
18043WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018044(
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 WDI_ControlBlockType* pWDICtx,
18046 WDI_EventInfoType* pEventData
18047)
18048{
18049 WDI_Status wdiStatus;
18050 eHalStatus halStatus;
18051 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18053
18054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018056 -------------------------------------------------------------------------*/
18057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18058 ( NULL == pEventData->pEventData))
18059 {
18060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 }
18065
18066 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18067
18068 /*-------------------------------------------------------------------------
18069 Extract response and send it to UMAC
18070 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 wpalMemoryCopy( &halStatus,
18072 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 sizeof(halStatus));
18074
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018076
18077 /*Notify UMAC*/
18078 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18079
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018081}/*WDI_ProcessUpdateBeaconParamsRsp*/
18082
18083/**
18084 @brief Process Send Beacon template Rsp function (called when a response
18085 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018086
18087 @param pWDICtx: pointer to the WLAN DAL context
18088 pEventData: pointer to the event information structure
18089
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 @see
18091 @return Result of the function call
18092*/
18093WDI_Status
18094WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018095(
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 WDI_ControlBlockType* pWDICtx,
18097 WDI_EventInfoType* pEventData
18098)
18099{
18100 WDI_Status wdiStatus;
18101 eHalStatus halStatus;
18102 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18104
18105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 -------------------------------------------------------------------------*/
18108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18109 ( NULL == pEventData->pEventData))
18110 {
18111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 }
18116
18117 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18118
18119 /*-------------------------------------------------------------------------
18120 Extract response and send it to UMAC
18121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 wpalMemoryCopy( &halStatus,
18123 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 sizeof(halStatus));
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018127
18128 /*Notify UMAC*/
18129 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18130
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018132}/*WDI_ProcessSendBeaconParamsRsp*/
18133
Jeff Johnsone7245742012-09-05 17:12:55 -070018134
Jeff Johnson295189b2012-06-20 16:38:30 -070018135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018137 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018138
18139 @param pWDICtx: pointer to the WLAN DAL context
18140 pEventData: pointer to the event information structure
18141
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 @see
18143 @return Result of the function call
18144*/
18145WDI_Status
18146WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018147(
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ControlBlockType* pWDICtx,
18149 WDI_EventInfoType* pEventData
18150)
18151{
18152 WDI_Status wdiStatus;
18153 eHalStatus halStatus;
18154 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18156
18157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 -------------------------------------------------------------------------*/
18160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18161 ( NULL == pEventData->pEventData))
18162 {
18163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 }
18168
18169 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18170
18171 /*-------------------------------------------------------------------------
18172 Extract response and send it to UMAC
18173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 wpalMemoryCopy( &halStatus,
18175 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 sizeof(halStatus));
18177
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018179
18180 /*Notify UMAC*/
18181 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18182
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018184}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18185
18186 /**
18187 @brief Process Set Max Tx Power Rsp function (called when a response
18188 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018189
18190 @param pWDICtx: pointer to the WLAN DAL context
18191 pEventData: pointer to the event information structure
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 @see
18194 @return Result of the function call
18195*/
18196WDI_Status
18197WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018198(
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ControlBlockType* pWDICtx,
18200 WDI_EventInfoType* pEventData
18201)
18202{
18203 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018204
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018206
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18209
18210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 -------------------------------------------------------------------------*/
18213 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18214 ( NULL == pEventData->pEventData))
18215 {
18216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 }
18221
18222 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18223
18224 /*-------------------------------------------------------------------------
18225 Extract response and send it to UMAC
18226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18228 pEventData->pEventData,
18229 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018230
18231 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18232 {
18233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18234 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 }
18237
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018239 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018241
18242 /*Notify UMAC*/
18243 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18244
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018246}
18247
schangd82195a2013-03-13 18:41:24 -070018248 /**
18249 @brief Process Set Tx Power Rsp function (called when a response
18250 is being received over the bus from HAL)
18251
18252 @param pWDICtx: pointer to the WLAN DAL context
18253 pEventData: pointer to the event information structure
18254
18255 @see
18256 @return Result of the function call
18257*/
18258WDI_Status
18259WDI_ProcessSetTxPowerRsp
18260(
18261 WDI_ControlBlockType* pWDICtx,
18262 WDI_EventInfoType* pEventData
18263)
18264{
18265 tSetTxPwrRspMsg halTxpowerrsp;
18266 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18267 WDA_SetTxPowerRspCb wdiReqStatusCb;
18268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18269
18270 /*-------------------------------------------------------------------------
18271 Sanity check
18272 -------------------------------------------------------------------------*/
18273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18274 ( NULL == pEventData->pEventData))
18275 {
18276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18277 "%s: Invalid parameters", __func__);
18278 WDI_ASSERT(0);
18279 return WDI_STATUS_E_FAILURE;
18280 }
18281
18282 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18283
18284 /*-------------------------------------------------------------------------
18285 Extract response and send it to UMAC
18286 -------------------------------------------------------------------------*/
18287 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18288 pEventData->pEventData,
18289 sizeof(halTxpowerrsp.setTxPwrRspParams));
18290
18291 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18292 {
18293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18294 "Error status returned in Set Tx Power Response ");
18295 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18296 return WDI_STATUS_E_FAILURE;
18297 }
18298
18299 wdiSetTxPowerRspMsg.wdiStatus =
18300 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18301
18302 /*Notify UMAC*/
18303 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18304
18305 return WDI_STATUS_SUCCESS;
18306}
Arif Hussain615295b2014-01-31 12:12:28 -080018307
18308/**
18309 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18310 is being received over the bus from HAL)
18311
18312 @param pWDICtx: pointer to the WLAN DAL context
18313 pEventData: pointer to the event information structure
18314
18315 @see
18316 @return Result of the function call
18317*/
18318WDI_Status
18319WDI_ProcessSetMaxTxPowerPerBandRsp
18320(
18321 WDI_ControlBlockType* pWDICtx,
18322 WDI_EventInfoType* pEventData
18323)
18324{
18325 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18326 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18327 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18329
18330 /*-------------------------------------------------------------------------
18331 Sanity check
18332 -------------------------------------------------------------------------*/
18333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18334 ( NULL == pEventData->pEventData))
18335 {
18336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18337 "%s: Invalid parameters", __func__);
18338 WDI_ASSERT(0);
18339 return WDI_STATUS_E_FAILURE;
18340 }
18341
18342 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18343
18344 /*-------------------------------------------------------------------------
18345 Extract response and send it to UMAC
18346 -------------------------------------------------------------------------*/
18347 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18348 pEventData->pEventData,
18349 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18350
18351 if (eHAL_STATUS_SUCCESS !=
18352 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18353 {
18354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18355 "Error status returned in Set Max Tx Power Per Band Response");
18356 return WDI_STATUS_E_FAILURE;
18357 }
18358
18359 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18360 WDI_HAL_2_WDI_STATUS(
18361 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18362
18363 /* Notify UMAC */
18364 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18365
18366 return WDI_STATUS_SUCCESS;
18367}
18368
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018369#ifdef FEATURE_WLAN_TDLS
18370/**
18371 @brief Process TDLS Link Establish Rsp function (called
18372 when a response is being received over the bus from HAL)
18373
18374 @param pWDICtx: pointer to the WLAN DAL context
18375 pEventData: pointer to the event information structure
18376
18377 @see
18378 @return Result of the function call
18379*/
18380WDI_Status
18381WDI_ProcessLinkEstablishReqRsp
18382(
18383 WDI_ControlBlockType* pWDICtx,
18384 WDI_EventInfoType* pEventData
18385)
18386{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018387 eHalStatus halStatus;
18388 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018389 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18390 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18391
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18393
18394 /*-------------------------------------------------------------------------
18395 Sanity check
18396 -------------------------------------------------------------------------*/
18397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18398 ( NULL == pEventData->pEventData))
18399 {
18400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18401 "%s: Invalid parameters", __func__);
18402 WDI_ASSERT(0);
18403 return WDI_STATUS_E_FAILURE;
18404 }
18405
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018406 /*-------------------------------------------------------------------------
18407 Extract indication and send it to UMAC
18408 -------------------------------------------------------------------------*/
18409 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18410 pEventData->pEventData,
18411 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18412
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018413 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18414
18415 /*-------------------------------------------------------------------------
18416 Extract response and send it to UMAC
18417 -------------------------------------------------------------------------*/
18418 wpalMemoryCopy( &halStatus,
18419 pEventData->pEventData,
18420 sizeof(halStatus));
18421
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018422 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18423 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018424
18425 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018426 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018427
18428 return WDI_STATUS_SUCCESS;
18429}/*WDI_ProcessLinkEstablishReqRsp*/
18430#endif
schangd82195a2013-03-13 18:41:24 -070018431
Jeff Johnson295189b2012-06-20 16:38:30 -070018432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018435
18436 @param pWDICtx: pointer to the WLAN DAL context
18437 pEventData: pointer to the event information structure
18438
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 @see
18440 @return Result of the function call
18441*/
18442WDI_Status
18443WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018444(
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 WDI_ControlBlockType* pWDICtx,
18446 WDI_EventInfoType* pEventData
18447)
18448{
18449 WDI_Status wdiStatus;
18450 eHalStatus halStatus;
18451 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18453
18454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 -------------------------------------------------------------------------*/
18457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18458 ( NULL == pEventData->pEventData))
18459 {
18460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 }
18465
18466 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18467
18468 /*-------------------------------------------------------------------------
18469 Extract response and send it to UMAC
18470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wpalMemoryCopy( &halStatus,
18472 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 sizeof(halStatus));
18474
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018476
18477 /*Notify UMAC*/
18478 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18479
Jeff Johnsone7245742012-09-05 17:12:55 -070018480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018481}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018485
18486 @param pWDICtx: pointer to the WLAN DAL context
18487 pEventData: pointer to the event information structure
18488
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 @see
18490 @return Result of the function call
18491*/
18492WDI_Status
18493WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018494(
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 WDI_ControlBlockType* pWDICtx,
18496 WDI_EventInfoType* pEventData
18497)
18498{
18499 WDI_Status wdiStatus;
18500 eHalStatus halStatus;
18501 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018502 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18504
18505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 -------------------------------------------------------------------------*/
18508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18509 ( NULL == pEventData->pEventData))
18510 {
18511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 }
18516
18517 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18518
18519 /*-------------------------------------------------------------------------
18520 Extract response and send it to UMAC
18521 -------------------------------------------------------------------------*/
18522 halStatus = *((eHalStatus*)pEventData->pEventData);
18523
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018525
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018526 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18527 * Other module states are taken care by PMC.
18528 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18529 */
18530 if (wdiStatus != WDI_STATUS_SUCCESS) {
18531
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18533 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18534 halStatus);
18535 /* Call Back is not required as we are putting the DXE in FULL
18536 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018537 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18538
18539 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018541 "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 -080018542 WDI_ASSERT(0);
18543 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018544 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 /*Notify UMAC*/
18546 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18547
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549}/*WDI_ProcessEnterImpsRsp*/
18550
18551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018554
18555 @param pWDICtx: pointer to the WLAN DAL context
18556 pEventData: pointer to the event information structure
18557
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 @see
18559 @return Result of the function call
18560*/
18561WDI_Status
18562WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018563(
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 WDI_ControlBlockType* pWDICtx,
18565 WDI_EventInfoType* pEventData
18566)
18567{
18568 WDI_Status wdiStatus;
18569 eHalStatus halStatus;
18570 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018571 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18573
18574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 -------------------------------------------------------------------------*/
18577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18578 ( NULL == pEventData->pEventData))
18579 {
18580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 }
18585
18586 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18587
18588 /*-------------------------------------------------------------------------
18589 Extract response and send it to UMAC
18590 -------------------------------------------------------------------------*/
18591 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018593
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018594 if (halStatus != eHAL_STATUS_SUCCESS)
18595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18596 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18597
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018599 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18600 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18601 {
18602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018603 "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 -080018604 WDI_ASSERT(0);
18605 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 /*Notify UMAC*/
18607 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18608
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018610}/*WDI_ProcessExitImpsRsp*/
18611
18612/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018615
18616 @param pWDICtx: pointer to the WLAN DAL context
18617 pEventData: pointer to the event information structure
18618
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 @see
18620 @return Result of the function call
18621*/
18622WDI_Status
18623WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018624(
Jeff Johnson295189b2012-06-20 16:38:30 -070018625 WDI_ControlBlockType* pWDICtx,
18626 WDI_EventInfoType* pEventData
18627)
18628{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018629 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18630 tHalEnterBmpsRspParams halEnterBmpsRsp;
18631 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18632 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018633 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18635
18636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 -------------------------------------------------------------------------*/
18639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18640 ( NULL == pEventData->pEventData))
18641 {
18642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 }
18647
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018649 Extract response and send it to UMAC
18650 -------------------------------------------------------------------------*/
18651 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18652 {
18653 wpalMemoryCopy( &halEnterBmpsRsp,
18654 pEventData->pEventData,
18655 sizeof(halEnterBmpsRsp));
18656
18657 //Used to print debug message
18658 halStatus = halEnterBmpsRsp.status;
18659 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18660 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18661 }
18662 else
18663 {
18664 halStatus = *((eHalStatus*)pEventData->pEventData);
18665 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18666 }
18667
18668 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018670 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18671 * Other module states are taken care by PMC.
18672 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18673 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018674 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18675 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018676
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018678 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18679 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018680 /* Call Back is not required as we are putting the DXE in FULL
18681 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018682 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18683 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18684 {
18685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018686 "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 -080018687 WDI_ASSERT(0);
18688 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018689 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018690 }
18691
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018693 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018694
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018696}/*WDI_ProcessEnterBmpsRsp*/
18697
18698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018701
18702 @param pWDICtx: pointer to the WLAN DAL context
18703 pEventData: pointer to the event information structure
18704
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 @see
18706 @return Result of the function call
18707*/
18708WDI_Status
18709WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018710(
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 WDI_ControlBlockType* pWDICtx,
18712 WDI_EventInfoType* pEventData
18713)
18714{
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 eHalStatus halStatus;
18716 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018717 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018718 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18721
18722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 -------------------------------------------------------------------------*/
18725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18726 ( NULL == pEventData->pEventData))
18727 {
18728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 }
18733
18734 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18735
18736 /*-------------------------------------------------------------------------
18737 Extract response and send it to UMAC
18738 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018739
18740 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18741 {
18742 wpalMemoryCopy( &halExitBmpsRsp,
18743 pEventData->pEventData,
18744 sizeof(halExitBmpsRsp));
18745
18746 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18747 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18748 }
18749 else
18750 {
18751 halStatus = *((eHalStatus*)pEventData->pEventData);
18752 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018754
18755 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018756 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18757 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18758 {
18759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018760 "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 -080018761 WDI_ASSERT(0);
18762 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18764
18765 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018766 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018767
Jeff Johnsone7245742012-09-05 17:12:55 -070018768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018769}/*WDI_ProcessExitBmpsRsp*/
18770
18771/**
18772 @brief Process Enter UAPSD Rsp function (called when a response
18773 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018774
18775 @param pWDICtx: pointer to the WLAN DAL context
18776 pEventData: pointer to the event information structure
18777
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 @see
18779 @return Result of the function call
18780*/
18781WDI_Status
18782WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018783(
Jeff Johnson295189b2012-06-20 16:38:30 -070018784 WDI_ControlBlockType* pWDICtx,
18785 WDI_EventInfoType* pEventData
18786)
18787{
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018789 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018790 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018791 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18792
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18794
18795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 -------------------------------------------------------------------------*/
18798 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18799 ( NULL == pEventData->pEventData))
18800 {
18801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 }
18806
18807 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18808
18809 /*-------------------------------------------------------------------------
18810 Extract response and send it to UMAC
18811 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018812 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18813 {
18814 wpalMemoryCopy( &halEnterUapsdRsp,
18815 pEventData->pEventData,
18816 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018818 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18819 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18820 }
18821 else
18822 {
18823 halStatus = *((eHalStatus*)pEventData->pEventData);
18824 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18825 }
18826
18827 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 {
18829 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18830 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18831 // the traffic to decide when to suspend the trigger frames when there is no traffic
18832 // activity on the trigger enabled ACs
18833 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18834
18835#ifdef WLAN_PERF
18836 // Increment the BD signature to refresh the fast path BD utilization
18837 pWDICtx->uBdSigSerialNum++;
18838#endif
18839 }
18840
18841 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018842 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018843
Jeff Johnsone7245742012-09-05 17:12:55 -070018844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018845}/*WDI_ProcessEnterUapsdRsp*/
18846
18847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018848 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018850
18851 @param pWDICtx: pointer to the WLAN DAL context
18852 pEventData: pointer to the event information structure
18853
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 @see
18855 @return Result of the function call
18856*/
18857WDI_Status
18858WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018859(
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 WDI_ControlBlockType* pWDICtx,
18861 WDI_EventInfoType* pEventData
18862)
18863{
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 eHalStatus halStatus;
18865 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018866 tHalExitUapsdRspParams halExitUapsdRsp;
18867 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18869
18870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018872 -------------------------------------------------------------------------*/
18873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18874 ( NULL == pEventData->pEventData))
18875 {
18876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 }
18881
18882 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18883
18884 /*-------------------------------------------------------------------------
18885 Extract response and send it to UMAC
18886 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018887 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18888 {
18889 wpalMemoryCopy( &halExitUapsdRsp,
18890 pEventData->pEventData,
18891 sizeof(halExitUapsdRsp));
18892
18893 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18894 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18895 }
18896 else
18897 {
18898 halStatus = *((eHalStatus*)pEventData->pEventData);
18899 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18900 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18902 // directly instead of the FW WQ.
18903 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18904
18905#ifdef WLAN_PERF
18906 // Increment the BD signature to refresh the fast path BD utilization
18907 pWDICtx->uBdSigSerialNum++;
18908#endif
18909
18910 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018911 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018912
Jeff Johnsone7245742012-09-05 17:12:55 -070018913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018914}/*WDI_ProcessExitUapsdRsp*/
18915
18916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018919
18920 @param pWDICtx: pointer to the WLAN DAL context
18921 pEventData: pointer to the event information structure
18922
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 @see
18924 @return Result of the function call
18925*/
18926WDI_Status
18927WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018928(
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 WDI_ControlBlockType* pWDICtx,
18930 WDI_EventInfoType* pEventData
18931)
18932{
18933 WDI_Status wdiStatus;
18934 eHalStatus halStatus;
18935 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18937
18938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 -------------------------------------------------------------------------*/
18941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18942 ( NULL == pEventData->pEventData))
18943 {
18944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 }
18949
18950 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18951
18952 /*-------------------------------------------------------------------------
18953 Extract response and send it to UMAC
18954 -------------------------------------------------------------------------*/
18955 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018957
18958 /*Notify UMAC*/
18959 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18960
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018962}/*WDI_ProcessSetUapsdAcParamsRsp*/
18963
18964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018967
18968 @param pWDICtx: pointer to the WLAN DAL context
18969 pEventData: pointer to the event information structure
18970
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 @see
18972 @return Result of the function call
18973*/
18974WDI_Status
18975WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018976(
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 WDI_ControlBlockType* pWDICtx,
18978 WDI_EventInfoType* pEventData
18979)
18980{
18981 WDI_Status wdiStatus;
18982 eHalStatus halStatus;
18983 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18985
18986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 -------------------------------------------------------------------------*/
18989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18990 ( NULL == pEventData->pEventData))
18991 {
18992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 }
18997
18998 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18999
19000 /*-------------------------------------------------------------------------
19001 Extract response and send it to UMAC
19002 -------------------------------------------------------------------------*/
19003 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019005
19006 /*Notify UMAC*/
19007 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19008
Jeff Johnsone7245742012-09-05 17:12:55 -070019009 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019010}/*WDI_ProcessUpdateUapsdParamsRsp*/
19011
19012/**
19013 @brief Process Configure RXP filter Rsp function (called when a
19014 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019015
19016 @param pWDICtx: pointer to the WLAN DAL context
19017 pEventData: pointer to the event information structure
19018
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 @see
19020 @return Result of the function call
19021*/
19022WDI_Status
19023WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019024(
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 WDI_ControlBlockType* pWDICtx,
19026 WDI_EventInfoType* pEventData
19027)
19028{
19029 WDI_Status wdiStatus;
19030 eHalStatus halStatus;
19031 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19033
19034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 -------------------------------------------------------------------------*/
19037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19038 ( NULL == pEventData->pEventData))
19039 {
19040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 }
19045
19046 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19047
19048 /*-------------------------------------------------------------------------
19049 Extract response and send it to UMAC
19050 -------------------------------------------------------------------------*/
19051 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019053
19054 /*Notify UMAC*/
19055 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19056
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019058}/*WDI_ProcessConfigureRxpFilterRsp*/
19059
19060/**
19061 @brief Process Set beacon filter Rsp function (called when a
19062 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019063
19064 @param pWDICtx: pointer to the WLAN DAL context
19065 pEventData: pointer to the event information structure
19066
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 @see
19068 @return Result of the function call
19069*/
19070WDI_Status
19071WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019072(
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 WDI_ControlBlockType* pWDICtx,
19074 WDI_EventInfoType* pEventData
19075)
19076{
19077 WDI_Status wdiStatus;
19078 eHalStatus halStatus;
19079 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19081
19082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 -------------------------------------------------------------------------*/
19085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19086 ( NULL == pEventData->pEventData))
19087 {
19088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019092 }
19093
19094 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19095
19096 /*-------------------------------------------------------------------------
19097 Extract response and send it to UMAC
19098 -------------------------------------------------------------------------*/
19099 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019101
19102 /*Notify UMAC*/
19103 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19104
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106}/*WDI_ProcessSetBeaconFilterRsp*/
19107
19108/**
19109 @brief Process remove beacon filter Rsp function (called when a
19110 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019111
19112 @param pWDICtx: pointer to the WLAN DAL context
19113 pEventData: pointer to the event information structure
19114
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 @see
19116 @return Result of the function call
19117*/
19118WDI_Status
19119WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019120(
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 WDI_ControlBlockType* pWDICtx,
19122 WDI_EventInfoType* pEventData
19123)
19124{
19125 WDI_Status wdiStatus;
19126 eHalStatus halStatus;
19127 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19129
19130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 -------------------------------------------------------------------------*/
19133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19134 ( NULL == pEventData->pEventData))
19135 {
19136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 }
19141
19142 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19143
19144 /*-------------------------------------------------------------------------
19145 Extract response and send it to UMAC
19146 -------------------------------------------------------------------------*/
19147 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019149
19150 /*Notify UMAC*/
19151 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19152
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154}/*WDI_ProcessRemBeaconFilterRsp*/
19155
19156/**
19157 @brief Process set RSSI thresholds Rsp function (called when a
19158 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019159
19160 @param pWDICtx: pointer to the WLAN DAL context
19161 pEventData: pointer to the event information structure
19162
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 @see
19164 @return Result of the function call
19165*/
19166WDI_Status
19167WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019168(
Jeff Johnson295189b2012-06-20 16:38:30 -070019169 WDI_ControlBlockType* pWDICtx,
19170 WDI_EventInfoType* pEventData
19171)
19172{
19173 WDI_Status wdiStatus;
19174 eHalStatus halStatus;
19175 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19177
19178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 -------------------------------------------------------------------------*/
19181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19182 ( NULL == pEventData->pEventData))
19183 {
19184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 }
19189
19190 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19191
19192 /*-------------------------------------------------------------------------
19193 Extract response and send it to UMAC
19194 -------------------------------------------------------------------------*/
19195 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019197
19198 /*Notify UMAC*/
19199 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19200
Jeff Johnsone7245742012-09-05 17:12:55 -070019201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019202}/*WDI_ProcessSetRSSIThresoldsRsp*/
19203
19204/**
19205 @brief Process host offload Rsp function (called when a
19206 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019207
19208 @param pWDICtx: pointer to the WLAN DAL context
19209 pEventData: pointer to the event information structure
19210
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 @see
19212 @return Result of the function call
19213*/
19214WDI_Status
19215WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019216(
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 WDI_ControlBlockType* pWDICtx,
19218 WDI_EventInfoType* pEventData
19219)
19220{
19221 WDI_Status wdiStatus;
19222 eHalStatus halStatus;
19223 WDI_HostOffloadCb wdiHostOffloadCb;
19224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19225
19226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 -------------------------------------------------------------------------*/
19229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19230 ( NULL == pEventData->pEventData))
19231 {
19232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 }
19237
19238 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19239
19240 /*-------------------------------------------------------------------------
19241 Extract response and send it to UMAC
19242 -------------------------------------------------------------------------*/
19243 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019245
19246 /*Notify UMAC*/
19247 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19248
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019250}/*WDI_ProcessHostOffloadRsp*/
19251
19252/**
19253 @brief Process keep alive Rsp function (called when a
19254 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019255
19256 @param pWDICtx: pointer to the WLAN DAL context
19257 pEventData: pointer to the event information structure
19258
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 @see
19260 @return Result of the function call
19261*/
19262WDI_Status
19263WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019264(
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 WDI_ControlBlockType* pWDICtx,
19266 WDI_EventInfoType* pEventData
19267)
19268{
19269 WDI_Status wdiStatus;
19270 eHalStatus halStatus;
19271 WDI_KeepAliveCb wdiKeepAliveCb;
19272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19274 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19275
19276
19277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 -------------------------------------------------------------------------*/
19280 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19281 ( NULL == pEventData->pEventData))
19282 {
19283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 }
19288
Jeff Johnsone7245742012-09-05 17:12:55 -070019289 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19290
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 /*-------------------------------------------------------------------------
19292 Extract response and send it to UMAC
19293 -------------------------------------------------------------------------*/
19294 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019296
19297 /*Notify UMAC*/
19298 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19299
Jeff Johnsone7245742012-09-05 17:12:55 -070019300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019301}/*WDI_ProcessKeepAliveRsp*/
19302
19303/**
19304 @brief Process wowl add ptrn Rsp function (called when a
19305 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_ProcessWowlAddBcPtrnRsp
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_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019322 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19323 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19324
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19326
19327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 -------------------------------------------------------------------------*/
19330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19331 ( NULL == pEventData->pEventData))
19332 {
19333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 }
19338
19339 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19340
19341 /*-------------------------------------------------------------------------
19342 Extract response and send it to UMAC
19343 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019344 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19345 {
19346 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19347 pEventData->pEventData,
19348 sizeof(halAddWowlBcastPtrRsp));
19349
19350 wdiWowlAddBcPtrRsp.wdiStatus =
19351 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19352 }
19353 else
19354 {
19355 halStatus = *((eHalStatus*)pEventData->pEventData);
19356 wdiWowlAddBcPtrRsp.wdiStatus =
19357 WDI_HAL_2_WDI_STATUS(halStatus);
19358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019359
19360 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019361 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019362
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019364}/*WDI_ProcessWowlAddBcPtrnRsp*/
19365
19366/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019369
19370 @param pWDICtx: pointer to the WLAN DAL context
19371 pEventData: pointer to the event information structure
19372
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 @see
19374 @return Result of the function call
19375*/
19376WDI_Status
19377WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019378(
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 WDI_ControlBlockType* pWDICtx,
19380 WDI_EventInfoType* pEventData
19381)
19382{
Jeff Johnson295189b2012-06-20 16:38:30 -070019383 eHalStatus halStatus;
19384 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019385 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19386 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19388
19389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 -------------------------------------------------------------------------*/
19392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19393 ( NULL == pEventData->pEventData))
19394 {
19395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 }
19400
19401 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19402
19403 /*-------------------------------------------------------------------------
19404 Extract response and send it to UMAC
19405 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019406 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19407 {
19408 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19409 pEventData->pEventData,
19410 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019412 wdiWowlDelBcstPtrRsp.wdiStatus =
19413 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19414 }
19415 else
19416 {
19417 halStatus = *((eHalStatus*)pEventData->pEventData);
19418 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19419 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019421 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019422
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019424}/*WDI_ProcessWowlDelBcPtrnRsp*/
19425
19426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019429
19430 @param pWDICtx: pointer to the WLAN DAL context
19431 pEventData: pointer to the event information structure
19432
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 @see
19434 @return Result of the function call
19435*/
19436WDI_Status
19437WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019438(
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 WDI_ControlBlockType* pWDICtx,
19440 WDI_EventInfoType* pEventData
19441)
19442{
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 eHalStatus halStatus;
19444 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019445 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19446 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19448
19449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 -------------------------------------------------------------------------*/
19452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19453 ( NULL == pEventData->pEventData))
19454 {
19455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019456 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 }
19460
19461 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19462
19463 /*-------------------------------------------------------------------------
19464 Extract response and send it to UMAC
19465 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019466 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19467 {
19468 wpalMemoryCopy( &halEnterWowlRspParams,
19469 (wpt_uint8*)pEventData->pEventData,
19470 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019472 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19473 wdiwowlEnterRsp.status =
19474 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19475 }
19476 else
19477 {
19478 halStatus = *((eHalStatus*)pEventData->pEventData);
19479 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19480 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019482 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019483
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019485}/*WDI_ProcessWowlEnterRsp*/
19486
19487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 is being received over the bus 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_ProcessWowlExitRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 eHalStatus halStatus;
19505 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019506 tHalExitWowlRspParams halExitWowlRspParams;
19507 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19508
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19510
19511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 -------------------------------------------------------------------------*/
19514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19515 ( NULL == pEventData->pEventData))
19516 {
19517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 }
19522
19523 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19524
19525 /*-------------------------------------------------------------------------
19526 Extract response and send it to UMAC
19527 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019528 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19529 {
19530 wpalMemoryCopy( &halExitWowlRspParams,
19531 pEventData->pEventData,
19532 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019533
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019534 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19535 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19536
19537 }
19538 else
19539 {
19540 halStatus = *((eHalStatus*)pEventData->pEventData);
19541 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19542 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019544 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019545
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019547}/*WDI_ProcessWowlExitRsp*/
19548
19549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 (called when a response is being received over the bus
19552 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019553
19554 @param pWDICtx: pointer to the WLAN DAL context
19555 pEventData: pointer to the event information structure
19556
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 @see
19558 @return Result of the function call
19559*/
19560WDI_Status
19561WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019562(
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 WDI_ControlBlockType* pWDICtx,
19564 WDI_EventInfoType* pEventData
19565)
19566{
19567 WDI_Status wdiStatus;
19568 eHalStatus halStatus;
19569 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19571
19572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 -------------------------------------------------------------------------*/
19575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19576 ( NULL == pEventData->pEventData))
19577 {
19578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 }
19583
19584 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19585
19586 /*-------------------------------------------------------------------------
19587 Extract response and send it to UMAC
19588 -------------------------------------------------------------------------*/
19589 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019590 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019591
19592 /*Notify UMAC*/
19593 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19594
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019596}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19597
19598
19599/**
19600 @brief Process Nv download(called when a response
19601 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019602
19603 @param pWDICtx: pointer to the WLAN DAL context
19604 pEventData: pointer to the event information structure
19605
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 @see
19607 @return Result of the function call
19608*/
19609WDI_Status
19610WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019611(
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 WDI_ControlBlockType* pWDICtx,
19613 WDI_EventInfoType* pEventData
19614)
19615{
19616
19617 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19618 tHalNvImgDownloadRspParams halNvDownloadRsp;
19619 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19620
19621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 -------------------------------------------------------------------------*/
19624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19625 ( NULL == pEventData->pEventData))
19626 {
19627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 }
19632
19633 /*-------------------------------------------------------------------------
19634 Extract response and send it to UMAC
19635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019636 wpalMemoryCopy( &halNvDownloadRsp,
19637 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019638 sizeof(halNvDownloadRsp));
19639
19640 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19641
19642 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19644 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 {
19646 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 }
19649 else
19650 {
19651 /*Reset the Nv related global information in WDI context information */
19652 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19653 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19654 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19655 /*call WDA callback function for last fragment */
19656 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19657 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19658 }
19659
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019661}
19662#ifdef WLAN_FEATURE_VOWIFI_11R
19663/**
19664 @brief Process Add TSpec Rsp function (called when a response
19665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019666
19667 @param pWDICtx: pointer to the WLAN DAL context
19668 pEventData: pointer to the event information structure
19669
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 @see
19671 @return Result of the function call
19672*/
19673WDI_Status
19674WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019675(
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 WDI_ControlBlockType* pWDICtx,
19677 WDI_EventInfoType* pEventData
19678)
19679{
19680 WDI_Status wdiStatus;
19681 tAggrAddTsRspParams aggrAddTsRsp;
19682 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19684
19685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 -------------------------------------------------------------------------*/
19688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19689 ( NULL == pEventData->pEventData))
19690 {
19691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 }
19696
19697 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19698
19699 /*-------------------------------------------------------------------------
19700 Extract response and send it to UMAC
19701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 wpalMemoryCopy( &aggrAddTsRsp,
19703 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 sizeof(aggrAddTsRsp));
19705
19706 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019708
19709 /*Notify UMAC*/
19710 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19711
Jeff Johnsone7245742012-09-05 17:12:55 -070019712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019713}/*WDI_ProcessAddTSpecRsp*/
19714#endif /* WLAN_FEATURE_VOWIFI_11R */
19715
19716/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019719
19720 @param pWDICtx: pointer to the WLAN DAL context
19721 pEventData: pointer to the event information structure
19722
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 @see
19724 @return Result of the function call
19725*/
19726WDI_Status
19727WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019728(
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 WDI_ControlBlockType* pWDICtx,
19730 WDI_EventInfoType* pEventData
19731)
19732{
19733 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19734 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19735 tHalHostResumeRspParams hostResumeRspMsg;
19736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19737
19738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019740 -------------------------------------------------------------------------*/
19741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19742 ( NULL == pEventData->pEventData))
19743 {
19744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 }
19749
19750 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19751
19752 /*-------------------------------------------------------------------------
19753 Extract response and send it to UMAC
19754 -------------------------------------------------------------------------*/
19755
Jeff Johnsone7245742012-09-05 17:12:55 -070019756 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 (wpt_uint8*)pEventData->pEventData,
19758 sizeof(hostResumeRspMsg));
19759
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 wdiResumeRspParams.wdiStatus =
19761 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019762
19763 /*Notify UMAC*/
19764 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19765
19766 return WDI_STATUS_SUCCESS;
19767}
19768
19769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019772
19773 @param pWDICtx: pointer to the WLAN DAL context
19774 pEventData: pointer to the event information structure
19775
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 @see
19777 @return Result of the function call
19778*/
19779WDI_Status
19780WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019781(
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 WDI_ControlBlockType* pWDICtx,
19783 WDI_EventInfoType* pEventData
19784)
19785{
19786 WDI_Status wdiStatus;
19787 eHalStatus halStatus;
19788 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19790
19791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 -------------------------------------------------------------------------*/
19794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19795 ( NULL == pEventData->pEventData))
19796 {
19797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019802
19803 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019804
19805 /*-------------------------------------------------------------------------
19806 Extract response and send it to UMAC
19807 -------------------------------------------------------------------------*/
19808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019810
19811 /*Notify UMAC*/
19812 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19813
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019815}/*WDI_ProcessSetTxPerTrackingRsp*/
19816
19817/*==========================================================================
19818 Indications from HAL
19819 ==========================================================================*/
19820/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019822 indication of this kind is being received over the bus
19823 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019824
19825 @param pWDICtx: pointer to the WLAN DAL context
19826 pEventData: pointer to the event information structure
19827
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 @see
19829 @return Result of the function call
19830*/
19831WDI_Status
19832WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019833(
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 WDI_ControlBlockType* pWDICtx,
19835 WDI_EventInfoType* pEventData
19836)
19837{
19838 WDI_LowLevelIndType wdiInd;
19839 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19841
19842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019844 -------------------------------------------------------------------------*/
19845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19846 ( NULL == pEventData->pEventData))
19847 {
19848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 }
19853
19854 /*-------------------------------------------------------------------------
19855 Extract indication and send it to UMAC
19856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19858 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 sizeof(tHalRSSINotification));
19860
19861 /*Fill in the indication parameters*/
19862 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19863 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19864 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19865 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19866 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19867 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19868 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19869 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19870 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19871 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19872 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19873 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19874 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019875 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19876 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019877
ltimariu034f7d62013-01-24 18:54:33 -080019878 if ( pWDICtx->wdiLowLevelIndCB )
19879 {
19880 /*Notify UMAC of indication*/
19881 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19882 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019883
19884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019885}/*WDI_ProcessLowRSSIInd*/
19886
19887
19888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 an indication of this kind is being received over the
19891 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019892
19893 @param pWDICtx: pointer to the WLAN DAL context
19894 pEventData: pointer to the event information structure
19895
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 @see
19897 @return Result of the function call
19898*/
19899WDI_Status
19900WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019901(
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 WDI_ControlBlockType* pWDICtx,
19903 WDI_EventInfoType* pEventData
19904)
19905{
19906 WDI_Status wdiStatus;
19907 eHalStatus halStatus;
19908 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019909 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19911
19912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 -------------------------------------------------------------------------*/
19915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19916 ( NULL == pEventData->pEventData))
19917 {
19918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019923 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019924 /*-------------------------------------------------------------------------
19925 Extract indication and send it to UMAC
19926 -------------------------------------------------------------------------*/
19927 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19928 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019929 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019930
19931 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019932 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019933 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19934 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019935 if ( pWDICtx->wdiLowLevelIndCB )
19936 {
19937 /*Notify UMAC*/
19938 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19939 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019940
19941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019942}/*WDI_ProcessMissedBeaconInd*/
19943
19944
19945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 an indication of this kind is being received over the
19948 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019949
19950 @param pWDICtx: pointer to the WLAN DAL context
19951 pEventData: pointer to the event information structure
19952
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 @see
19954 @return Result of the function call
19955*/
19956WDI_Status
19957WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019958(
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 WDI_ControlBlockType* pWDICtx,
19960 WDI_EventInfoType* pEventData
19961)
19962{
19963 WDI_Status wdiStatus;
19964 eHalStatus halStatus;
19965 WDI_LowLevelIndType wdiInd;
19966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19967
19968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 -------------------------------------------------------------------------*/
19971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19972 ( NULL == pEventData->pEventData))
19973 {
19974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 }
19979
19980 /*-------------------------------------------------------------------------
19981 Extract indication and send it to UMAC
19982 -------------------------------------------------------------------------*/
19983 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19984 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019986
19987 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019988 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 /* ! TO DO - fill in from HAL struct:
19990 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19991
ltimariu034f7d62013-01-24 18:54:33 -080019992 if ( pWDICtx->wdiLowLevelIndCB )
19993 {
19994 /*Notify UMAC*/
19995 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19996 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019997
19998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019999}/*WDI_ProcessUnkAddrFrameInd*/
20000
20001
20002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020003 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 indication of this kind is being received over the bus
20005 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020006
20007 @param pWDICtx: pointer to the WLAN DAL context
20008 pEventData: pointer to the event information structure
20009
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 @see
20011 @return Result of the function call
20012*/
20013WDI_Status
20014WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020015(
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 WDI_ControlBlockType* pWDICtx,
20017 WDI_EventInfoType* pEventData
20018)
20019{
20020 WDI_LowLevelIndType wdiInd;
20021 tpSirMicFailureInd pHalMicFailureInd;
20022
20023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20024
20025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 -------------------------------------------------------------------------*/
20028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20029 ( NULL == pEventData->pEventData))
20030 {
20031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020036
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20038 /*-------------------------------------------------------------------------
20039 Extract indication and send it to UMAC
20040 -------------------------------------------------------------------------*/
20041
20042 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20045 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20046 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20047 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20048 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20049 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20050 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20051 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020056 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 pHalMicFailureInd->info.keyId;
20058 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20059 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20060 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20061 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080020062
20063 if ( pWDICtx->wdiLowLevelIndCB )
20064 {
20065 /*Notify UMAC*/
20066 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20067 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020068
20069 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020070}/*WDI_ProcessMicFailureInd*/
20071
20072
20073/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 an indication of this kind is being received over the
20076 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020077
20078 @param pWDICtx: pointer to the WLAN DAL context
20079 pEventData: pointer to the event information structure
20080
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 @see
20082 @return Result of the function call
20083*/
20084WDI_Status
20085WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020086(
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 WDI_ControlBlockType* pWDICtx,
20088 WDI_EventInfoType* pEventData
20089)
20090{
20091 WDI_Status wdiStatus;
20092 eHalStatus halStatus;
20093 WDI_LowLevelIndType wdiInd;
20094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20095
20096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020098 -------------------------------------------------------------------------*/
20099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20100 ( NULL == pEventData->pEventData))
20101 {
20102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 }
20107
20108 /*-------------------------------------------------------------------------
20109 Extract indication and send it to UMAC
20110 -------------------------------------------------------------------------*/
20111
20112 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20113 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020115
20116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20117 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020118
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20121 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020122
ltimariu034f7d62013-01-24 18:54:33 -080020123 if ( pWDICtx->wdiLowLevelIndCB )
20124 {
20125 /*Notify UMAC*/
20126 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20127 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020128
20129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020130}/*WDI_ProcessFatalErrorInd*/
20131
20132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 an indication of this kind is being received over the
20135 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020136
20137 @param pWDICtx: pointer to the WLAN DAL context
20138 pEventData: pointer to the event information structure
20139
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 @see
20141 @return Result of the function call
20142*/
20143WDI_Status
20144WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020145(
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 WDI_ControlBlockType* pWDICtx,
20147 WDI_EventInfoType* pEventData
20148)
20149{
20150 tDeleteStaContextParams halDelSTACtx;
20151 WDI_LowLevelIndType wdiInd;
20152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20153
20154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 -------------------------------------------------------------------------*/
20157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20158 ( NULL == pEventData->pEventData))
20159 {
20160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 }
20165
20166 /*-------------------------------------------------------------------------
20167 Extract indication and send it to UMAC
20168 -------------------------------------------------------------------------*/
20169
20170 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 wpalMemoryCopy( &halDelSTACtx,
20172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 sizeof(halDelSTACtx));
20174
20175 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020177
20178 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20179 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20180 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20181 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20182
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20188 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020189
ltimariu034f7d62013-01-24 18:54:33 -080020190 if ( pWDICtx->wdiLowLevelIndCB )
20191 {
20192 /*Notify UMAC*/
20193 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020195
20196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020197}/*WDI_ProcessDelSTAInd*/
20198
20199/**
20200*@brief Process Coex Indication function (called when
20201 an indication of this kind is being received over the
20202 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020203
20204 @param pWDICtx: pointer to the WLAN DAL context
20205 pEventData: pointer to the event information structure
20206
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 @see
20208 @return Result of the function call
20209*/
20210WDI_Status
20211WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020212(
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 WDI_ControlBlockType* pWDICtx,
20214 WDI_EventInfoType* pEventData
20215)
20216{
20217 WDI_LowLevelIndType wdiInd;
20218 tCoexIndMsg halCoexIndMsg;
20219 wpt_uint32 index;
20220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20221
20222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020224 -------------------------------------------------------------------------*/
20225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20226 ( NULL == pEventData->pEventData ))
20227 {
20228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 }
20233
20234 /*-------------------------------------------------------------------------
20235 Extract indication and send it to UMAC
20236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020237 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20238 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020239 sizeof(halCoexIndMsg.coexIndParams) );
20240
20241 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 wdiInd.wdiIndicationType = WDI_COEX_IND;
20243 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20245 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020246 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020247 }
20248
20249 // DEBUG
20250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20251 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20253 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20254 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20255 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20256 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020257
ltimariu034f7d62013-01-24 18:54:33 -080020258 if ( pWDICtx->wdiLowLevelIndCB )
20259 {
20260 /*Notify UMAC*/
20261 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20262 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020263
20264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020265}/*WDI_ProcessCoexInd*/
20266
20267/**
20268*@brief Process Tx Complete Indication function (called when
20269 an indication of this kind is being received over the
20270 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020271
20272 @param pWDICtx: pointer to the WLAN DAL context
20273 pEventData: pointer to the event information structure
20274
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 @see
20276 @return Result of the function call
20277*/
20278WDI_Status
20279WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020280(
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 WDI_ControlBlockType* pWDICtx,
20282 WDI_EventInfoType* pEventData
20283)
20284{
20285 WDI_LowLevelIndType wdiInd;
20286 tTxComplIndMsg halTxComplIndMsg;
20287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20288
20289 /*-------------------------------------------------------------------------
20290 Sanity check
20291 -------------------------------------------------------------------------*/
20292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20293 ( NULL == pEventData->pEventData ))
20294 {
20295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 WDI_ASSERT( 0 );
20298 return WDI_STATUS_E_FAILURE;
20299 }
20300
20301 /*-------------------------------------------------------------------------
20302 Extract indication and send it to UMAC
20303 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20305 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 sizeof(halTxComplIndMsg.txComplParams) );
20307
20308 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20310 wdiInd.wdiIndicationData.tx_complete_status
20311 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020312
ltimariu034f7d62013-01-24 18:54:33 -080020313 if ( pWDICtx->wdiLowLevelIndCB )
20314 {
20315 /*Notify UMAC*/
20316 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20317 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020318
20319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020320}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020321#ifdef FEATURE_WLAN_TDLS
20322/**
20323*@brief Process TDLS Indication function (called when
20324 an indication of this kind is being received over the
20325 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020326
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020327 @param pWDICtx: pointer to the WLAN DAL context
20328 pEventData: pointer to the event information structure
20329
20330 @see
20331 @return Result of the function call
20332*/
20333WDI_Status
20334WDI_ProcessTdlsInd
20335(
20336 WDI_ControlBlockType* pWDICtx,
20337 WDI_EventInfoType* pEventData
20338)
20339{
20340 WDI_LowLevelIndType wdiInd;
20341 tTdlsIndMsg halTdlsIndMsg;
20342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20343
20344 /*-------------------------------------------------------------------------
20345 Sanity check
20346 -------------------------------------------------------------------------*/
20347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20348 ( NULL == pEventData->pEventData ))
20349 {
20350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20351 "%s: Invalid parameters", __func__);
20352 WDI_ASSERT( 0 );
20353 return WDI_STATUS_E_FAILURE;
20354 }
20355
20356 /*-------------------------------------------------------------------------
20357 Extract indication and send it to UMAC
20358 -------------------------------------------------------------------------*/
20359 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20360 pEventData->pEventData,
20361 sizeof(halTdlsIndMsg.tdlsIndParams) );
20362
20363 /*Fill in the indication parameters*/
20364 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20365
20366 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20367 = halTdlsIndMsg.tdlsIndParams.status;
20368
20369 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20370 = halTdlsIndMsg.tdlsIndParams.staIdx;
20371
20372 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20373 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20374
20375 /*Notify UMAC*/
20376 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20377
20378 return WDI_STATUS_SUCCESS;
20379}/*WDI_ProcessTdlsInd*/
20380#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020381/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020382*@brief Process Noa Start Indication function (called when
20383 an indication of this kind is being received over the
20384 bus from HAL)
20385
20386 @param pWDICtx: pointer to the WLAN DAL context
20387 pEventData: pointer to the event information structure
20388
20389 @see
20390 @return Result of the function call
20391*/
20392WDI_Status
20393WDI_ProcessP2pNoaStartInd
20394(
20395 WDI_ControlBlockType* pWDICtx,
20396 WDI_EventInfoType* pEventData
20397)
20398{
20399 WDI_LowLevelIndType wdiInd;
20400 tNoaStartIndMsg halNoaStartIndMsg;
20401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20402
20403 /*-------------------------------------------------------------------------
20404 Sanity check
20405 -------------------------------------------------------------------------*/
20406 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20407 ( NULL == pEventData->pEventData ))
20408 {
20409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20410 "%s: Invalid parameters", __func__);
20411 WDI_ASSERT( 0 );
20412 return WDI_STATUS_E_FAILURE;
20413 }
20414
20415 /*-------------------------------------------------------------------------
20416 Extract indication and send it to UMAC
20417 -------------------------------------------------------------------------*/
20418 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20419 pEventData->pEventData,
20420 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20421
20422 /*Fill in the indication parameters*/
20423 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20424
20425 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20426 = halNoaStartIndMsg.noaStartIndParams.status;
20427
20428 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20429 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20430
20431 /*Notify UMAC*/
20432 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20433
20434 return WDI_STATUS_SUCCESS;
20435}/*WDI_ProcessNoaAttrInd*/
20436
20437/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020438*@brief Process Noa Attr Indication function (called when
20439 an indication of this kind is being received over the
20440 bus from HAL)
20441
20442 @param pWDICtx: pointer to the WLAN DAL context
20443 pEventData: pointer to the event information structure
20444
20445 @see
20446 @return Result of the function call
20447*/
20448WDI_Status
20449WDI_ProcessP2pNoaAttrInd
20450(
20451 WDI_ControlBlockType* pWDICtx,
20452 WDI_EventInfoType* pEventData
20453)
20454{
20455 WDI_LowLevelIndType wdiInd;
20456 tNoaAttrIndMsg halNoaAttrIndMsg;
20457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20458
20459 /*-------------------------------------------------------------------------
20460 Sanity check
20461 -------------------------------------------------------------------------*/
20462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20463 ( NULL == pEventData->pEventData ))
20464 {
20465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020467 WDI_ASSERT( 0 );
20468 return WDI_STATUS_E_FAILURE;
20469 }
20470
20471 /*-------------------------------------------------------------------------
20472 Extract indication and send it to UMAC
20473 -------------------------------------------------------------------------*/
20474 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20475 pEventData->pEventData,
20476 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20477
20478 /*Fill in the indication parameters*/
20479 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020480
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20482 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020483
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20485 = halNoaAttrIndMsg.noaAttrIndParams.index;
20486 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20487 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20488 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20489 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020490
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20492 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20493 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20494 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20495 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20496 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20497 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20498 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020499
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20501 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20502 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20503 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20504 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20505 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20506 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20507 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20508
ltimariu034f7d62013-01-24 18:54:33 -080020509 if ( pWDICtx->wdiLowLevelIndCB )
20510 {
20511 /*Notify UMAC*/
20512 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20513 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020514
20515 return WDI_STATUS_SUCCESS;
20516}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020517
20518/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 an indication of this kind is being received over the
20521 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020522
20523 @param pWDICtx: pointer to the WLAN DAL context
20524 pEventData: pointer to the event information structure
20525
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 @see
20527 @return Result of the function call
20528*/
20529WDI_Status
20530WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020531(
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 WDI_ControlBlockType* pWDICtx,
20533 WDI_EventInfoType* pEventData
20534)
20535{
20536 WDI_LowLevelIndType wdiInd;
20537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020538
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 /*-------------------------------------------------------------------------
20540 Extract indication and send it to UMAC
20541 -------------------------------------------------------------------------*/
20542 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20544
ltimariu034f7d62013-01-24 18:54:33 -080020545 if ( pWDICtx->wdiLowLevelIndCB )
20546 {
20547 /*Notify UMAC*/
20548 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20549 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020550
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020552}/*WDI_ProcessTxPerHitInd*/
20553
Jeff Johnson295189b2012-06-20 16:38:30 -070020554/**
Yue Ma365933a2013-08-14 15:59:08 -070020555 @brief Process Periodic Tx Pattern Fw Indication function
20556
20557 @param pWDICtx: pointer to the WLAN DAL context
20558 pEventData: pointer to the event information structure
20559
20560 @see
20561 @return Result of the function call
20562*/
20563WDI_Status
20564WDI_ProcessPeriodicTxPtrnFwInd
20565(
20566 WDI_ControlBlockType* pWDICtx,
20567 WDI_EventInfoType* pEventData
20568)
20569{
20570 WDI_LowLevelIndType wdiInd;
20571
20572 /*-------------------------------------------------------------------------
20573 Sanity check
20574 -------------------------------------------------------------------------*/
20575 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20576 (NULL == pEventData->pEventData))
20577 {
20578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20579 "%s: Invalid parameters", __func__);
20580 WDI_ASSERT(0);
20581 return WDI_STATUS_E_FAILURE;
20582 }
20583
20584 /*-------------------------------------------------------------------------
20585 Extract indication and send it to UMAC
20586 -------------------------------------------------------------------------*/
20587 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20588 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20589 sizeof(tHalPeriodicTxPtrnFwInd));
20590
20591 if (pWDICtx->wdiLowLevelIndCB)
20592 {
20593 /*Notify UMAC*/
20594 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20595 }
20596
20597 return WDI_STATUS_SUCCESS;
20598}
20599
20600/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 @brief WDI_ProcessFTMCommandReq
20602 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020603
20604 @param pWDICtx: pointer to the WLAN DAL context
20605 pEventData: pointer to the event information structure
20606
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 @see
20608 @return Result of the function call
20609*/
20610WDI_Status
20611WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020612(
Jeff Johnson295189b2012-06-20 16:38:30 -070020613 WDI_ControlBlockType* pWDICtx,
20614 WDI_EventInfoType* pEventData
20615)
20616{
20617 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20618 wpt_uint8 *ftmCommandBuffer = NULL;
20619 wpt_uint16 dataOffset;
20620 wpt_uint16 bufferSize;
20621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 -------------------------------------------------------------------------*/
20624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20625 ( NULL == pEventData->pEventData))
20626
20627 {
20628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 }
20633
20634 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20635
20636 /* Get MSG Buffer */
20637 WDI_GetMessageBuffer(pWDICtx,
20638 WDI_FTM_CMD_REQ,
20639 ftmCommandReq->bodyLength,
20640 &ftmCommandBuffer,
20641 &dataOffset,
20642 &bufferSize);
20643
20644 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20645 ftmCommandReq->FTMCommandBody,
20646 ftmCommandReq->bodyLength);
20647
20648 /* Send MSG */
20649 return WDI_SendMsg(pWDICtx,
20650 ftmCommandBuffer,
20651 bufferSize,
20652 pEventData->pCBfnc,
20653 pEventData->pUserData,
20654 WDI_FTM_CMD_RESP);
20655}
20656
20657/**
20658 @brief WDI_ProcessFTMCommandRsp
20659 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020660
20661 @param pWDICtx: pointer to the WLAN DAL context
20662 pEventData: pointer to the event information structure
20663
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 @see
20665 @return Result of the function call
20666*/
20667WDI_Status
20668WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020669(
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 WDI_ControlBlockType* pWDICtx,
20671 WDI_EventInfoType* pEventData
20672)
20673{
20674 WDI_FTMCommandRspCb ftmCMDRspCb;
20675 tProcessPttRspParams *ftmCMDRspData = NULL;
20676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20677
20678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020680 -------------------------------------------------------------------------*/
20681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20682 ( NULL == pEventData->pEventData))
20683 {
20684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 }
20689
20690 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20691
20692 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20695 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20697
20698 /*Notify UMAC*/
20699 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20700
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020702}
Jeff Johnson295189b2012-06-20 16:38:30 -070020703/**
20704 @brief WDI_ProcessHalDumpCmdReq
20705 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020706
20707 @param pWDICtx: pointer to the WLAN DAL context
20708 pEventData: pointer to the event information structure
20709
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 @see
20711 @return Result of the function call
20712*/
20713WDI_Status
20714WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020715(
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 WDI_ControlBlockType* pWDICtx,
20717 WDI_EventInfoType* pEventData
20718)
20719{
20720 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20721 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20722 wpt_uint16 usDataOffset = 0;
20723 wpt_uint16 usSendSize = 0;
20724 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020726
20727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 -------------------------------------------------------------------------*/
20730 if (( NULL == pEventData ) ||
20731 ( NULL == pEventData->pEventData) ||
20732 ( NULL == pEventData->pCBfnc ))
20733 {
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 }
20739
20740 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20741 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20742
20743 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020744 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020745 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020746 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020752 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020754
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 /*-----------------------------------------------------------------------
20756 Get message buffer
20757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20760 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20763 {
20764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020765 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 }
20770
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 wpalMemoryCopy( pSendBuffer+usDataOffset,
20772 &halDumpCmdReqMsg.dumpCmdReqParams,
20773 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020774
20775 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020777
20778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20782 wdiHALDumpCmdRspCb, pEventData->pUserData,
20783 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020784}
20785
20786/**
20787 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 Process hal Dump Command Response from HAL, simply route to HDD
20789
20790 @param pWDICtx: pointer to the WLAN DAL context
20791 pEventData: pointer to the event information structure
20792
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 @see
20794 @return Result of the function call
20795*/
20796WDI_Status
20797WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020798(
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 WDI_ControlBlockType* pWDICtx,
20800 WDI_EventInfoType* pEventData
20801)
20802{
20803 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020804 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020805 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20806
20807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 -------------------------------------------------------------------------*/
20810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20811 ( NULL == pEventData->pEventData))
20812 {
20813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 }
20818
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020820
20821 /*Initialize the WDI Response structure */
20822 wdiHALDumpCmdRsp.usBufferLen = 0;
20823 wdiHALDumpCmdRsp.pBuffer = NULL;
20824
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020825 wpalMemoryCopy( &halDumpCmdRspParams,
20826 pEventData->pEventData,
20827 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020828
20829 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020830 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020831
20832 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020833 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 {
20835 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020836 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20837 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20838
20839 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20840 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020841 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020843
Jeff Johnson295189b2012-06-20 16:38:30 -070020844 /*Notify UMAC*/
20845 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20846
20847 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20848 {
20849 /* Free the allocated buffer */
20850 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20851 }
20852 return WDI_STATUS_SUCCESS;
20853}
20854
20855/*==========================================================================
20856 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020857
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020860==========================================================================*/
20861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 when it wishes to send up a notification like the ones
20864 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020865
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
20868 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 wctsNotifyCBData: the callback data of the user
20871
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020873
20874 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020875*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020876void
Jeff Johnson295189b2012-06-20 16:38:30 -070020877WDI_NotifyMsgCTSCB
20878(
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 WCTS_NotifyEventType wctsEvent,
20881 void* wctsNotifyCBData
20882)
20883{
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20886
20887 if (NULL == pWDICtx )
20888 {
20889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 }
20894
20895 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20896 {
20897 /* callback presumably occurred after close */
20898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020899 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 }
20902
20903 if ( WCTS_EVENT_OPEN == wctsEvent )
20904 {
20905 /*Flag must be set atomically as it is checked from incoming request
20906 functions*/
20907 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020909
20910 /*Nothing to do - so try to dequeue any pending request that may have
20911 occurred while we were trying to establish this*/
20912 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 {
20917 /*Flag must be set atomically as it is checked from incoming request
20918 functions*/
20919 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020921
20922 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 wpalMutexRelease(&pWDICtx->wptMutex);
20925
20926 /*Notify that the Control Channel is closed */
20927 wpalEventSet(&pWDICtx->wctsActionEvent);
20928 }
20929
20930}/*WDI_NotifyMsgCTSCB*/
20931
20932
20933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 when it wishes to send up a packet received over the
20936 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020937
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020939
20940 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 pMsg: the packet
20942 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 wctsRxMsgCBData: the callback data of the user
20944
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020946
20947 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020948*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020949void
20950WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020951(
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 void* pMsg,
20954 wpt_uint32 uLen,
20955 void* wctsRxMsgCBData
20956)
20957{
Jeff Johnsone7245742012-09-05 17:12:55 -070020958 tHalMsgHeader *pHalMsgHeader;
20959 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20962
20963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020966 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020967 ( uLen < sizeof(tHalMsgHeader)))
20968 {
20969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020973 }
20974
20975 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20976 {
20977 /* callback presumably occurred after close */
20978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020979 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 }
20982
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 context - so no serialization is necessary here
20985 ! - revisit this assumption */
20986
20987 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20988
20989 if ( uLen != pHalMsgHeader->msgLen )
20990 {
20991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20992 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20994 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 }
20996
20997 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20998
20999 /*The message itself starts after the header*/
21000 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21001 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21002 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21003 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21004
21005
21006 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21007 {
21008 /*Stop the timer as the response was received */
21009 /*!UT - check for potential race conditions between stop and response */
21010 wpalTimerStop(&pWDICtx->wptResponseTimer);
21011 }
21012 /* Check if we receive a response message which is not expected */
21013 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21014 {
21015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21016 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21017 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021019 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21020 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080021021
21022 if (gWDICb.bEnableSSR == false)
21023 {
21024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21025 "SSR is not enabled on WDI timeout");
21026 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21027 return;
21028 }
21029 wpalWcnssResetIntr();
21030 /* if this timer fires, it means Riva did not receive the FIQ */
21031 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21032
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 return;
21034 }
21035
21036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21037 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21038
21039 /*Post response event to the state machine*/
21040 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21041
21042}/*WDI_RXMsgCTSCB*/
21043
21044
21045/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021047========================================================================*/
21048
21049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021052
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 @param pWDICtx - pointer to the control block
21054
21055 @return Result of the function call
21056*/
21057WPT_INLINE WDI_Status
21058WDI_CleanCB
21059(
21060 WDI_ControlBlockType* pWDICtx
21061)
21062{
21063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21064
21065 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021067
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21070 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21071
21072 WDI_ResetAssocSessions( pWDICtx );
21073
21074 return WDI_STATUS_SUCCESS;
21075}/*WDI_CleanCB*/
21076
21077
21078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021080
Jeff Johnsone7245742012-09-05 17:12:55 -070021081
21082 @param pWDICtx: pointer to the WLAN DAL context
21083 pEventData: pointer to the event information structure
21084
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 @see
21086 @return Result of the function call
21087*/
21088WPT_INLINE WDI_Status
21089WDI_ProcessRequest
21090(
21091 WDI_ControlBlockType* pWDICtx,
21092 WDI_EventInfoType* pEventData
21093)
21094{
21095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21096
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 already checked these pointers*/
21099
21100 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21101 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021104 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 WDI_getReqMsgString(pEventData->wdiRequest),
21106 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21107 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21108 }
21109 else
21110 {
21111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 pEventData->wdiRequest);
21114 return WDI_STATUS_E_NOT_IMPLEMENT;
21115 }
21116}/*WDI_ProcessRequest*/
21117
21118
21119/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021121 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021122 prefixes it with a send message header
21123
21124 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 wdiReqType: type of the request being sent
21126 uBufferLen: message buffer len
21127 pMsgBuffer: resulting allocated buffer
21128 pusDataOffset: offset in the buffer where the caller
21129 can start copying its message data
21130 puBufferSize: the resulting buffer size (offset+buff
21131 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021132
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 @see
21134 @return Result of the function call
21135*/
21136WDI_Status
21137WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021138(
21139 WDI_ControlBlockType* pWDICtx,
21140 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021142 wpt_uint8** pMsgBuffer,
21143 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 wpt_uint16* pusBufferSize
21145)
21146{
21147 tHalMsgHeader halMsgHeader;
21148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21149
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021151 again*/
21152
21153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021156 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21158 if ( NULL == *pMsgBuffer )
21159 {
21160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21161 "Unable to allocate message buffer for req %s (%d)",
21162 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 }
21167
21168 /*-------------------------------------------------------------------------
21169 Fill in the message header
21170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21172 /* Fill msgVersion */
21173#ifdef WLAN_FEATURE_11AC
21174 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021175 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 else
21177#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021178 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021179
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21181 *pusDataOffset = sizeof(halMsgHeader);
21182 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21183
21184 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021185}/*WDI_GetMessageBuffer*/
21186
21187
21188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021189 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 the CB
21192
21193 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021195
Jeff Johnson295189b2012-06-20 16:38:30 -070021196 usSendSize size of the buffer to be sent
21197 pRspCb: response callback - save in the WDI
21198 CB
21199 pUserData: user data associated with the
21200 callback
21201 wdiExpectedResponse: the code of the response that is
21202 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021203
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 @see
21205 @return Result of the function call
21206*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021207WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021208WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021209(
21210 WDI_ControlBlockType* pWDICtx,
21211 wpt_uint8* pSendBuffer,
21212 wpt_uint32 usSendSize,
21213 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021214 void* pUserData,
21215 WDI_ResponseEnumType wdiExpectedResponse
21216)
21217{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021218 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021219 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21221
21222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 ------------------------------------------------------------------------*/
21225 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 pWDICtx->pfncRspCB = pRspCb;
21227 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021228
21229 /*-----------------------------------------------------------------------
21230 Call the CTS to send this message over - free message afterwards
21231 - notify transport failure
21232 Note: CTS is reponsible for freeing the message buffer.
21233 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021234 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21235 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21236 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 "Failed to send message over the bus - catastrophic failure");
21240
Jeff Johnsond13512a2012-07-17 11:42:19 -070021241 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021243 else
21244 {
21245 /* even when message was placed in CTS deferred Q, we will treat it
21246 success but log this info
21247 */
21248 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21249 {
21250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21251 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21252 "response %s (%d)",
21253 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21254 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021255 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021256 }
21257 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021258
Jeff Johnsond13512a2012-07-17 11:42:19 -070021259 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021260 if ( NULL != pWDICtx->wdiReqStatusCB )
21261 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021262 /*Inform originator whether request went through or not*/
21263 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21264 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 pWDICtx->wdiReqStatusCB = NULL;
21266 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021267 callback(wdiStatus, callbackContext);
21268
21269 /*For WDI requests which have registered a request callback,
21270 inform the WDA caller of the same via setting the return value
21271 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21272 end up repeating the functonality in the req callback for the
21273 WDI_STATUS_E_FAILURE case*/
21274 if (wdiStatus == WDI_STATUS_E_FAILURE)
21275 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 }
21277
Jeff Johnsond13512a2012-07-17 11:42:19 -070021278 if ( wdiStatus == WDI_STATUS_SUCCESS )
21279 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 /*Start timer for the expected response */
21281 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021282
21283 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021284 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussainc07e21f2013-11-27 13:57:14 -080021285 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021286 }
21287 else
21288 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021289 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021290 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21291 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021292
Jeff Johnsond13512a2012-07-17 11:42:19 -070021293 return wdiStatus;
21294
Jeff Johnson295189b2012-06-20 16:38:30 -070021295}/*WDI_SendMsg*/
21296
21297
21298
21299/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 the bus using the control transport and saves some info
21302 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021303
21304 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 pSendBuffer: buffer to be sent
21306 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021307
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 @see
21309 @return Result of the function call
21310*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021312WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021313(
21314 WDI_ControlBlockType* pWDICtx,
21315 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 wpt_uint32 usSendSize
21317)
21318{
21319 wpt_uint32 uStatus ;
21320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21321
21322 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 Note: CTS is reponsible for freeing the message buffer.
21325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 (void*)pSendBuffer, usSendSize );
21328
21329 /*Inform Upper MAC about the outcome of the request*/
21330 if ( NULL != pWDICtx->wdiReqStatusCB )
21331 {
21332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21333 "Send indication status : %d", uStatus);
21334
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021335 /* even if CTS placed indication into its deferred Q, we treat it
21336 * as success and let CTS drain its queue as per smd interrupt to CTS
21337 */
21338 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 -070021339 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 }
21341
21342 /*If sending of the message failed - it is considered catastrophic and
21343 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021344 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21345 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21346
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 {
21348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021349 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021350
21351 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21352 return WDI_STATUS_E_FAILURE;
21353 }
21354
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356}/*WDI_SendIndication*/
21357
21358
21359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 @brief WDI_DetectedDeviceError - called internally by DAL when
21361 it has detected a failure in the device
21362
21363 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 usErrorCode: error code detected by WDI or received
21365 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021366
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021369*/
21370void
21371WDI_DetectedDeviceError
21372(
21373 WDI_ControlBlockType* pWDICtx,
21374 wpt_uint16 usErrorCode
21375)
21376{
21377 WDI_LowLevelIndType wdiInd;
21378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21379
21380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21381 "Device Error detected code: %d - transitioning to stopped state",
21382 usErrorCode);
21383
21384 wpalMutexAcquire(&pWDICtx->wptMutex);
21385
21386 WDI_STATableStop(pWDICtx);
21387
21388 WDI_ResetAssocSessions(pWDICtx);
21389
21390 /*Set the expected state transition to stopped - because the device
21391 experienced a failure*/
21392 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21393
21394 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021396
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021398
21399 /*TO DO: - there should be an attempt to reset the device here*/
21400
21401 wpalMutexRelease(&pWDICtx->wptMutex);
21402
21403 /*------------------------------------------------------------------------
21404 Notify UMAC if a handler is registered
21405 ------------------------------------------------------------------------*/
21406 if (pWDICtx->wdiLowLevelIndCB)
21407 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021408 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21409 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021410
21411 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21412 }
21413}/*WDI_DetectedDeviceError*/
21414
21415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021416 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 we started on send message has expire - this should
21418 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021419 reply - trigger catastrophic failure
21420 @param
21421
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021423
21424 @see
21425 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021426*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021427void
Jeff Johnson295189b2012-06-20 16:38:30 -070021428WDI_ResponseTimerCB
21429(
21430 void *pUserData
21431)
21432{
21433 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21435
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021436 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 }
21443
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021444 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021445 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussainc07e21f2013-11-27 13:57:14 -080021446 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021447
21448 /* If response timer is running at this time that means this timer
21449 * event is not for the last request but rather last-to-last request and
21450 * this timer event has come after we recevied respone for last-to-last
21451 * message
21452 */
21453 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21454 {
21455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21456 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021457 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021458 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21460 "uArchTimeStampTmrStart: %llu seconds, "
21461 "uArchTimeStampTmrExp: %llu seconds",
21462 pWDICtx->uArchTimeStampRspTmrStart,
21463 pWDICtx->uArchTimeStampRspTmrExp);
21464
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021465 return;
21466 }
21467
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021468 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 {
21470
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021473 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021475 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21476 pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21478 "uArchTimeStampTmrStart: %llu seconds, "
21479 "uArchTimeStampTmrExp: %llu seconds",
21480 pWDICtx->uArchTimeStampRspTmrStart,
21481 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021482
21483 /* WDI timeout means Riva is not responding or SMD communication to Riva
21484 * is not happening. The only possible way to recover from this error
21485 * is to initiate SSR from APPS.
21486 * There is also an option to re-enable wifi, which will eventually
21487 * trigger SSR
21488 */
21489 if (gWDICb.bEnableSSR == false)
21490 {
21491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21492 "SSR is not enabled on WDI timeout");
21493 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21494 return;
21495 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021496#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021497 wpalWcnssResetIntr();
21498 /* if this timer fires, it means Riva did not receive the FIQ */
21499 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021500#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021501 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21502 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021503#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021504 }
21505 else
21506 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021508 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021509 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021510 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21511 pWDICtx->uTimeStampRspTmrExp);
Arif Hussainc07e21f2013-11-27 13:57:14 -080021512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21513 "uArchTimeStampTmrStart: %llu seconds, "
21514 "uArchTimeStampTmrExp: %llu seconds",
21515 pWDICtx->uArchTimeStampRspTmrStart,
21516 pWDICtx->uArchTimeStampRspTmrExp);
21517
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 }
21519
21520 return;
21521
21522}/*WDI_ResponseTimerCB*/
21523
21524
21525/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021527
Jeff Johnsone7245742012-09-05 17:12:55 -070021528
21529 @param pWDICtx: pointer to the WLAN DAL context
21530 pEventData: pointer to the event information structure
21531
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 @see
21533 @return Result of the function call
21534*/
21535WPT_INLINE WDI_Status
21536WDI_ProcessResponse
21537(
21538 WDI_ControlBlockType* pWDICtx,
21539 WDI_EventInfoType* pEventData
21540)
21541{
21542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21543
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 already checked these pointers
21546 ! - revisit this assumption */
21547 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21548 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021551 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 WDI_getRespMsgString(pEventData->wdiResponse),
21553 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21554 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21555 }
21556 else
21557 {
21558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 pEventData->wdiResponse);
21561 return WDI_STATUS_E_NOT_IMPLEMENT;
21562 }
21563}/*WDI_ProcessResponse*/
21564
21565
21566/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021568=========================================================================*/
21569
21570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 @brief Utility function used by the DAL Core to help queue a
21572 request that cannot be processed right away.
21573 @param
21574
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 pWDICtx: - pointer to the WDI control block
21576 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 queued
21578
21579 @see
21580 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021581*/
21582WDI_Status
21583WDI_QueuePendingReq
21584(
21585 WDI_ControlBlockType* pWDICtx,
21586 WDI_EventInfoType* pEventData
21587)
21588{
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21593
21594 if ( NULL == pEventDataQueue )
21595 {
21596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 WDI_ASSERT(0);
21599 return WDI_STATUS_MEM_FAILURE;
21600 }
21601
21602 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21603 pEventDataQueue->pUserData = pEventData->pUserData;
21604 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21605 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021607
21608 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21609 {
21610 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021611
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 if ( NULL == pEventInfo )
21613 {
21614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 WDI_ASSERT(0);
21617 wpalMemoryFree(pEventDataQueue);
21618 return WDI_STATUS_MEM_FAILURE;
21619 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021620
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21622
21623 }
21624 pEventDataQueue->pEventData = pEventInfo;
21625
21626 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021628
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021630
21631 return WDI_STATUS_SUCCESS;
21632}/*WDI_QueuePendingReq*/
21633
21634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 @param
21638
21639 pMsg - pointer to the message
21640
21641 @see
21642 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021643*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021644void
Jeff Johnson295189b2012-06-20 16:38:30 -070021645WDI_PALCtrlMsgCB
21646(
21647 wpt_msg *pMsg
21648)
21649{
21650 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021651 WDI_ControlBlockType* pWDICtx = NULL;
21652 WDI_Status wdiStatus;
21653 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 void* pUserData;
21655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21656
21657 if (( NULL == pMsg )||
21658 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21659 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21660 {
21661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 }
21666
21667 /*Transition back to the state that we had before serialization
21668 - serialization transitions us to BUSY to stop any incomming requests
21669 ! TO DO L: possible race condition here if a request comes in between the
21670 state transition and the post function*/
21671
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021673
21674 /*-----------------------------------------------------------------------
21675 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 -----------------------------------------------------------------------*/
21678 switch ( pEventData->wdiRequest )
21679 {
21680
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21683 break;
21684
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 case WDI_NV_DOWNLOAD_REQ:
21686 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21687 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21688 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21689 {
21690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021691 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21693 }
21694 else
21695 {
21696 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21697 }
21698
21699 break;
21700
21701 default:
21702 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21703 break;
21704 }/*switch ( pEventData->wdiRequest )*/
21705
21706 if ( WDI_STATUS_SUCCESS != wdiStatus )
21707 {
21708 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21709
21710 if ( NULL != pfnReqStatusCB )
21711 {
21712 /*Fail the request*/
21713 pfnReqStatusCB( wdiStatus, pUserData);
21714 }
21715 }
21716
21717 /* Free data - that was allocated when queueing*/
21718 if( pEventData != NULL )
21719 {
21720 if( pEventData->pEventData != NULL )
21721 {
21722 wpalMemoryFree(pEventData->pEventData);
21723 }
21724 wpalMemoryFree(pEventData);
21725 }
21726
21727 if( pMsg != NULL )
21728 {
21729 wpalMemoryFree(pMsg);
21730 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021731
Jeff Johnson295189b2012-06-20 16:38:30 -070021732}/*WDI_PALCtrlMsgCB*/
21733
21734/**
21735 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 and schedule for execution a pending request
21737 @param
21738
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 pWDICtx: - pointer to the WDI control block
21740 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 queued
21742
21743 @see
21744 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021745*/
21746WDI_Status
21747WDI_DequeuePendingReq
21748(
21749 WDI_ControlBlockType* pWDICtx
21750)
21751{
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21756
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021758
21759 if ( NULL == pNode )
21760 {
21761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 return WDI_STATUS_SUCCESS;
21764 }
21765
21766 /*The node actually points to the 1st element inside the Event Data struct -
21767 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769
21770 /*Serialize processing in the control thread
21771 !TO DO: - check to see if these are all the messages params that need
21772 to be filled in*/
21773 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21774
21775 if ( NULL == palMsg )
21776 {
21777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021778 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 palMsg->callback = WDI_PALCtrlMsgCB;
21784 palMsg->ptr = pEventData;
21785
21786 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 palMsg->val = pWDICtx->uGlobalState;
Leo Chang6e358542013-12-17 13:35:00 -080021788 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021789
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 /*Transition back to BUSY as we need to handle a queued request*/
21791 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021792
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21794
21795 return WDI_STATUS_PENDING;
21796}/*WDI_DequeuePendingReq*/
21797
21798
21799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 away.- The assoc requests will be queued by BSSID
21803 @param
21804
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 pWDICtx: - pointer to the WDI control block
21806 pEventData: pointer to the evnt info that needs to be queued
21807 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021808
21809 @see
21810 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021811*/
21812WDI_Status
21813WDI_QueueNewAssocRequest
21814(
21815 WDI_ControlBlockType* pWDICtx,
21816 WDI_EventInfoType* pEventData,
21817 wpt_macAddr macBSSID
21818)
21819{
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 wpt_uint8 i;
21821 WDI_BSSSessionType* pSession = NULL;
21822 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021824 void* pEventInfo;
21825 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021827
Jeff Johnsone7245742012-09-05 17:12:55 -070021828
21829 /*------------------------------------------------------------------------
21830 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 ------------------------------------------------------------------------*/
21832 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21833 {
21834 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21835 {
21836 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 pSession = &pWDICtx->aBSSSessions[i];
21838 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021839 }
21840 }
21841
21842 if ( i >= WDI_MAX_BSS_SESSIONS )
21843 {
21844 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021847
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 /*------------------------------------------------------------------------
21849 Fill in the BSSID for this session and set the usage flag
21850 ------------------------------------------------------------------------*/
21851 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021853
21854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 ------------------------------------------------------------------------*/
21857 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21858 if ( NULL == pEventDataQueue )
21859 {
21860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021861 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 WDI_ASSERT(0);
21863 return WDI_STATUS_MEM_FAILURE;
21864 }
21865
21866 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21867 if ( NULL == pSessionIdElement )
21868 {
21869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021870 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 WDI_ASSERT(0);
21872 wpalMemoryFree(pEventDataQueue);
21873 return WDI_STATUS_MEM_FAILURE;
21874 }
21875
21876 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21877 if ( NULL == pEventInfo )
21878 {
21879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021880 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 WDI_ASSERT(0);
21882 wpalMemoryFree(pSessionIdElement);
21883 wpalMemoryFree(pEventDataQueue);
21884 return WDI_STATUS_MEM_FAILURE;
21885 }
21886
21887 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21888 pEventDataQueue->pUserData = pEventData->pUserData;
21889 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21890 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021891 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021892
21893 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21894 pEventDataQueue->pEventData = pEventInfo;
21895
21896 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021897 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021898
21899 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021901
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021903
21904 /*We need to maintain a separate list that keeps track of the order in which
21905 the new assoc requests are being queued such that we can start processing
21906 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 pSessionIdElement->ucIndex = i;
21908 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909
21910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21911 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
21914 /*Return pending as this is what the status of the request is since it has
21915 been queued*/
21916 return WDI_STATUS_PENDING;
21917}/*WDI_QueueNewAssocRequest*/
21918
21919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 away.- The assoc requests will be queued by BSSID
21923 @param
21924
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 pWDICtx: - pointer to the WDI control block
21926 pSession: - session in which to queue
21927 pEventData: pointer to the event info that needs to be
21928 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021929
21930 @see
21931 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021932*/
21933WDI_Status
21934WDI_QueueAssocRequest
21935(
21936 WDI_ControlBlockType* pWDICtx,
21937 WDI_BSSSessionType* pSession,
21938 WDI_EventInfoType* pEventData
21939)
21940{
Jeff Johnsone7245742012-09-05 17:12:55 -070021941 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021945
21946 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 Sanity check
21948 ------------------------------------------------------------------------*/
21949 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21950 {
21951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021953
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 }
21956
21957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 ------------------------------------------------------------------------*/
21960 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21961 if ( NULL == pEventDataQueue )
21962 {
21963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021964 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 WDI_ASSERT(0);
21966 return WDI_STATUS_MEM_FAILURE;
21967 }
21968
21969 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21970 if ( NULL == pEventInfo )
21971 {
21972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21973 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021974 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 WDI_ASSERT(0);
21976 wpalMemoryFree(pEventDataQueue);
21977 return WDI_STATUS_MEM_FAILURE;
21978 }
21979
21980 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21981 pEventDataQueue->pUserData = pEventData->pUserData;
21982 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21983 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 pEventDataQueue->pEventData = pEventInfo;
21986
21987 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21988
21989 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021991
21992 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021996
21997 /*The result of this operation is pending because the request has been
21998 queued and it will be processed at a later moment in time */
21999 return WDI_STATUS_PENDING;
22000}/*WDI_QueueAssocRequest*/
22001
22002/**
22003 @brief Utility function used by the DAL Core to help dequeue
22004 an association request that was pending
22005 The request will be queued up in front of the main
22006 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 @param
22008
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022010
22011
22012 @see
22013 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022014*/
22015WDI_Status
22016WDI_DequeueAssocRequest
22017(
22018 WDI_ControlBlockType* pWDICtx
22019)
22020{
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 wpt_list_node* pNode = NULL;
22022 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 WDI_BSSSessionType* pSession;
22024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022025
22026 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 Sanity check
22028 ------------------------------------------------------------------------*/
22029 if ( NULL == pWDICtx )
22030 {
22031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022033
Jeff Johnsone7245742012-09-05 17:12:55 -070022034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 }
22036
22037 /*------------------------------------------------------------------------
22038 An association has been completed => a new association can occur
22039 Check to see if there are any pending associations ->
22040 If so , transfer all the pending requests into the busy queue for
22041 processing
22042 These requests have arrived prior to the requests in the busy queue
22043 (bc they needed to be processed in order to be placed in this queue)
22044 => they will be placed at the front of the busy queue
22045 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022047
22048 if ( NULL == pNode )
22049 {
22050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 return WDI_STATUS_SUCCESS;
22053 }
22054
22055 /*The node actually points to the 1st element inside the Session Id struct -
22056 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022058
22059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22060 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22061
22062 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22063 {
22064 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022065
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 the front of the main waiting queue for subsequent execution*/
22068 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022069 while ( NULL != pNode )
22070 {
22071 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22073 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 }
22077 else
22078 {
22079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 WPAL_ASSERT(0);
22082 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022085
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22087 wpalMemoryFree(pSessionIdElement);
22088 return WDI_STATUS_SUCCESS;
22089}/*WDI_DequeueAssocRequest*/
22090
22091/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 pending requests - all req cb will be called with
22094 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 @param
22096
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022098
22099 @see
22100 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022101*/
22102WDI_Status
22103WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022104(
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 WDI_ControlBlockType* pWDICtx
22106)
22107{
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 void* pUserData;
22112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22113
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022115
22116 /*------------------------------------------------------------------------
22117 Go through all the requests and fail them - this will only be called
22118 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 ------------------------------------------------------------------------*/
22121 while( pNode )
22122 {
22123 /*The node actually points to the 1st element inside the Event Data struct -
22124 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022125 pEventDataQueue = (WDI_EventInfoType*)pNode;
22126
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22128 if ( NULL != pfnReqStatusCB )
22129 {
22130 /*Fail the request*/
22131 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22132 }
22133 /* Free data - that was allocated when queueing */
22134 if ( pEventDataQueue->pEventData != NULL )
22135 {
22136 wpalMemoryFree(pEventDataQueue->pEventData);
22137 }
22138 wpalMemoryFree(pEventDataQueue);
22139
22140 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22141 {
22142 break;
22143 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 }
22145
Jeff Johnson295189b2012-06-20 16:38:30 -070022146 return WDI_STATUS_SUCCESS;
22147}/*WDI_ClearPendingRequests*/
22148
22149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 @brief Helper routine used to init the BSS Sessions in the WDI control block
22151
22152
22153 @param pWDICtx: pointer to the WLAN DAL context
22154
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 @see
22156*/
22157void
22158WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022159(
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 WDI_ControlBlockType* pWDICtx
22161)
22162{
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22165
22166 /*-------------------------------------------------------------------------
22167 No Sanity check
22168 -------------------------------------------------------------------------*/
22169 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22173 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22174 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22175 }
22176}/*WDI_ResetAssocSessions*/
22177
22178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 @brief Helper routine used to find a session based on the BSSID
22180
22181
22182 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 pSession: pointer to the session (if found)
22185
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022188*/
22189wpt_uint8
22190WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022191(
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ControlBlockType* pWDICtx,
22193 wpt_macAddr macBSSID,
22194 WDI_BSSSessionType** ppSession
22195)
22196{
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22199
22200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 -------------------------------------------------------------------------*/
22203 if ( NULL == ppSession )
22204 {
22205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022206 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 }
22209
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022211
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 /*------------------------------------------------------------------------
22213 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 ------------------------------------------------------------------------*/
22215 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22216 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022217 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22218 (eWLAN_PAL_TRUE ==
22219 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22220 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 {
22222 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022223 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 return i;
22225 }
22226 }
22227
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022229}/*WDI_FindAssocSession*/
22230
22231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 @brief Helper routine used to find a session based on the BSSID
22233
22234
22235 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022236 ucBSSIdx: BSS Index of the session
22237 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022238
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022241*/
22242wpt_uint8
22243WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022244(
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 WDI_ControlBlockType* pWDICtx,
22246 wpt_uint16 ucBSSIdx,
22247 WDI_BSSSessionType** ppSession
22248)
22249{
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22252
22253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 -------------------------------------------------------------------------*/
22256 if ( NULL == ppSession )
22257 {
22258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022259 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 }
22262
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022264
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 /*------------------------------------------------------------------------
22266 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 ------------------------------------------------------------------------*/
22268 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22269 {
22270 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22271 {
22272 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 return i;
22275 }
22276 }
22277
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022279}/*WDI_FindAssocSessionByBSSIdx*/
22280
22281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 @brief Helper routine used to find a session based on the BSSID
22283
22284
22285 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 ucBSSIdx: BSS Index of the session
22287 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022291*/
22292wpt_uint8
22293WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022294(
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 WDI_ControlBlockType* pWDICtx,
22296 wpt_uint16 usIdx,
22297 WDI_BSSSessionType** ppSession
22298)
22299{
22300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22301
22302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 -------------------------------------------------------------------------*/
22305 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22306 {
22307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022308 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 }
22311
22312 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022314
22315 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022316
Jeff Johnson295189b2012-06-20 16:38:30 -070022317}/*WDI_FindAssocSessionByBSSIdx*/
22318
22319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022320 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022322
22323
22324 @param pWDICtx: pointer to the WLAN DAL context
22325 pSession: pointer to the session (if found)
22326
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022329*/
22330wpt_uint8
22331WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022332(
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 WDI_ControlBlockType* pWDICtx,
22334 WDI_BSSSessionType** ppSession
22335)
22336{
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 -------------------------------------------------------------------------*/
22342 if ( NULL == ppSession )
22343 {
22344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022345 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022346 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022347 }
22348
Jeff Johnsone7245742012-09-05 17:12:55 -070022349 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022350
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 /*------------------------------------------------------------------------
22352 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 ------------------------------------------------------------------------*/
22354 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22355 {
22356 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22357 {
22358 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 return i;
22361 }
22362 }
22363
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022365}/*WDI_FindEmptySession*/
22366
22367
22368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022371
22372
22373 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022374 macBSSID: pointer to BSSID. If NULL, get all the session.
22375 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22376 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22377 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 @see
22379 @return Number of sessions in use
22380*/
22381wpt_uint8
22382WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022383(
Hoonki Lee26599972013-04-24 01:21:58 -070022384 WDI_ControlBlockType* pWDICtx,
22385 wpt_macAddr macBSSID,
22386 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022387)
22388{
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022391
22392 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 Count all sessions in use
22394 ------------------------------------------------------------------------*/
22395 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22396 {
Hoonki Lee26599972013-04-24 01:21:58 -070022397 if ( macBSSID && skipBSSID &&
22398 (eWLAN_PAL_TRUE ==
22399 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22400 WDI_MAC_ADDR_LEN)))
22401 {
22402 continue;
22403 }
22404 else if ( pWDICtx->aBSSSessions[i].bInUse )
22405 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 }
22409
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022411}/*WDI_GetActiveSessionsCount*/
22412
22413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022416
22417
22418 @param pWDICtx: pointer to the WLAN DAL context
22419 pSession: pointer to the session (if found)
22420
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022423*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022424void
Jeff Johnson295189b2012-06-20 16:38:30 -070022425WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022426(
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 WDI_ControlBlockType* pWDICtx,
22428 WDI_BSSSessionType* ppSession
22429)
22430{
22431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 -------------------------------------------------------------------------*/
22434 if ( NULL == ppSession )
22435 {
22436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022437 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 }
22440
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 /*------------------------------------------------------------------------
22442 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 ------------------------------------------------------------------------*/
22444 wpal_list_destroy(&ppSession->wptPendingQueue);
22445 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22447 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22449 wpal_list_init(&ppSession->wptPendingQueue);
22450
22451}/*WDI_DeleteSession*/
22452
22453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 @param
22457
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 WDI_AddStaParams: - pointer to the WDI Add STA params
22459 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022460
22461 @see
22462 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022463*/
22464void
22465WDI_AddBcastSTAtoSTATable
22466(
22467 WDI_ControlBlockType* pWDICtx,
22468 WDI_AddStaParams * staParams,
22469 wpt_uint16 usBcastStaIdx
22470)
22471{
22472 WDI_AddStaParams wdiAddSTAParam = {0};
22473 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22475
22476 /*---------------------------------------------------------------------
22477 Sanity check
22478 ---------------------------------------------------------------------*/
22479 if ( NULL == staParams )
22480 {
22481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022483
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 }
22486
22487 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22488 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22489 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22490 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22491 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22492 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22493 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22494 WDI_MAC_ADDR_LEN );
22495 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22496 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22497 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22498 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22499 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22500 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22501 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022502
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22504}
22505
22506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 @brief NV blob will be divided into fragments of size 4kb and
22508 Sent to HAL
22509
22510 @param pWDICtx: pointer to the WLAN DAL context
22511 pEventData: pointer to the event information structure
22512
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 @see
22514 @return Result of the function call
22515 */
22516
22517WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022518(
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 WDI_ControlBlockType* pWDICtx,
22520 WDI_EventInfoType* pEventData
22521)
22522{
22523
22524 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22525 wpt_uint8* pSendBuffer = NULL;
22526 wpt_uint16 usDataOffset = 0;
22527 wpt_uint16 usSendSize = 0;
22528 wpt_uint16 usCurrentFragmentSize =0;
22529 wpt_uint8* pSrcBuffer = NULL;
22530 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22531 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22532
22533 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22534 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22535 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22536
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22539
22540 /* Update the current Fragment Number */
22541 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22542
22543 /*Update the HAL REQ structure */
22544 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22545 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22546 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22547
22548 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 image will be sent to HAL*/
22551
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022554 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22558 usCurrentFragmentSize = FRAGMENT_SIZE;
22559
22560 /*Update the HAL REQ structure */
22561 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22562 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22563
22564 }
22565 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 usCurrentFragmentSize = FRAGMENT_SIZE;
22568
22569 /*Update the HAL REQ structure */
22570 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22571 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22572 }
22573
22574 /*-----------------------------------------------------------------------
22575 Get message buffer
22576 -----------------------------------------------------------------------*/
22577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22578 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22579 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22582 {
22583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022584 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 pEventData, pwdiNvDownloadReqParams);
22586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 }
22589
22590 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022591 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22593
22594 /* Appending the NV image fragment */
22595 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22596 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22597 usCurrentFragmentSize);
22598
22599 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022600 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022601
Jeff Johnsone7245742012-09-05 17:12:55 -070022602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22603 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 WDI_NV_DOWNLOAD_RESP);
22605
22606}
Jeff Johnsone7245742012-09-05 17:12:55 -070022607/*============================================================================
22608 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 ============================================================================*/
22610/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 @brief Helper routine used to find a session based on the BSSID
22612 @param pContext: pointer to the WLAN DAL context
22613 @param pDPContext: pointer to the Datapath context
22614
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022617*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022618WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022619WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22620{
22621 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22622
22623 pCB->pDPContext = pDPContext;
22624 return;
22625}
22626
22627/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 @brief Helper routine used to find a session based on the BSSID
22629
22630
22631 @param pContext: pointer to the WLAN DAL context
22632
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 @see
22634 @return pointer to Datapath context
22635*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022636WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022637WDI_DS_GetDatapathContext (void *pContext)
22638{
22639 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22640 return pCB->pDPContext;
22641}
22642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 @brief Helper routine used to find a session based on the BSSID
22644
22645
22646 @param pContext: pointer to the WLAN DAL context
22647 @param pDTDriverContext: pointer to the Transport Driver context
22648
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 @see
22650 @return void
22651*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022652WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022653WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22654{
22655 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22656
22657 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022659}
22660
22661/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 @brief Helper routine used to find a session based on the BSSID
22663
22664
22665 @param pWDICtx: pointer to the WLAN DAL context
22666
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022668 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022669*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022670WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022671WDT_GetTransportDriverContext (void *pContext)
22672{
22673 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022675}
22676
Jeff Johnsone7245742012-09-05 17:12:55 -070022677/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 Helper inline converters
22679 ============================================================================*/
22680/*Convert WDI driver type into HAL driver type*/
22681WPT_STATIC WPT_INLINE WDI_Status
22682WDI_HAL_2_WDI_STATUS
22683(
22684 eHalStatus halStatus
22685)
22686{
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 the chances of getting inlined*/
22689 switch( halStatus )
22690 {
22691 case eHAL_STATUS_SUCCESS:
22692 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22693 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22694 return WDI_STATUS_SUCCESS;
22695 case eHAL_STATUS_FAILURE:
22696 return WDI_STATUS_E_FAILURE;
22697 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 return WDI_STATUS_MEM_FAILURE;
22699 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 default:
22702 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22703 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022704
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022706}/*WDI_HAL_2_WDI_STATUS*/
22707
22708/*Convert WDI request type into HAL request type*/
22709WPT_STATIC WPT_INLINE tHalHostMsgType
22710WDI_2_HAL_REQ_TYPE
22711(
22712 WDI_RequestEnumType wdiReqType
22713)
22714{
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 the chances of getting inlined*/
22717 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 return WLAN_HAL_RMV_STAKEY_REQ;
22754 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WDI_DEL_BA_REQ:
22763 return WLAN_HAL_DEL_BA_REQ;
22764#ifdef FEATURE_WLAN_CCX
22765 case WDI_TSM_STATS_REQ:
22766 return WLAN_HAL_TSM_STATS_REQ;
22767#endif
22768 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 case WDI_ADD_BA_SESSION_REQ:
22779 return WLAN_HAL_ADD_BA_SESSION_REQ;
22780 case WDI_TRIGGER_BA_REQ:
22781 return WLAN_HAL_TRIGGER_BA_REQ;
22782 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22787 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22788 case WDI_SET_MAX_TX_POWER_REQ:
22789 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022790 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22791 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022792 case WDI_SET_TX_POWER_REQ:
22793 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22795 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022796#ifdef FEATURE_WLAN_TDLS
22797 case WDI_TDLS_LINK_ESTABLISH_REQ:
22798 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22799#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022801 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022802 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 case WDI_REM_BEACON_FILTER_REQ:
22821 return WLAN_HAL_REM_BCN_FILTER_REQ;
22822 case WDI_SET_RSSI_THRESHOLDS_REQ:
22823 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22824 case WDI_HOST_OFFLOAD_REQ:
22825 return WLAN_HAL_HOST_OFFLOAD_REQ;
22826 case WDI_WOWL_ADD_BC_PTRN_REQ:
22827 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22828 case WDI_WOWL_DEL_BC_PTRN_REQ:
22829 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22830 case WDI_WOWL_ENTER_REQ:
22831 return WLAN_HAL_ENTER_WOWL_REQ;
22832 case WDI_WOWL_EXIT_REQ:
22833 return WLAN_HAL_EXIT_WOWL_REQ;
22834 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22835 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22836 case WDI_NV_DOWNLOAD_REQ:
22837 return WLAN_HAL_DOWNLOAD_NV_REQ;
22838 case WDI_FLUSH_AC_REQ:
22839 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22840 case WDI_BTAMP_EVENT_REQ:
22841 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22842#ifdef WLAN_FEATURE_VOWIFI_11R
22843 case WDI_AGGR_ADD_TS_REQ:
22844 return WLAN_HAL_AGGR_ADD_TS_REQ;
22845#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 case WDI_FTM_CMD_REQ:
22847 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 case WDI_ADD_STA_SELF_REQ:
22849 return WLAN_HAL_ADD_STA_SELF_REQ;
22850 case WDI_DEL_STA_SELF_REQ:
22851 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022852#ifdef FEATURE_OEM_DATA_SUPPORT
22853 case WDI_START_OEM_DATA_REQ:
22854 return WLAN_HAL_START_OEM_DATA_REQ;
22855#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 case WDI_HOST_RESUME_REQ:
22857 return WLAN_HAL_HOST_RESUME_REQ;
22858 case WDI_HOST_SUSPEND_IND:
22859 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022860 case WDI_TRAFFIC_STATS_IND:
22861 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022862#ifdef WLAN_FEATURE_11W
22863 case WDI_EXCLUDE_UNENCRYPTED_IND:
22864 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22865#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 case WDI_KEEP_ALIVE_REQ:
22867 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022868#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022869 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22870 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022871#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022872#ifdef FEATURE_WLAN_SCAN_PNO
22873 case WDI_SET_PREF_NETWORK_REQ:
22874 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22875 case WDI_SET_RSSI_FILTER_REQ:
22876 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22877 case WDI_UPDATE_SCAN_PARAMS_REQ:
22878 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22879#endif // FEATURE_WLAN_SCAN_PNO
22880 case WDI_SET_TX_PER_TRACKING_REQ:
22881 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22882#ifdef WLAN_FEATURE_PACKET_FILTERING
22883 case WDI_8023_MULTICAST_LIST_REQ:
22884 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22885 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22888 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22889 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22890 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22891#endif // WLAN_FEATURE_PACKET_FILTERING
22892 case WDI_HAL_DUMP_CMD_REQ:
22893 return WLAN_HAL_DUMP_COMMAND_REQ;
22894#ifdef WLAN_FEATURE_GTK_OFFLOAD
22895 case WDI_GTK_OFFLOAD_REQ:
22896 return WLAN_HAL_GTK_OFFLOAD_REQ;
22897 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22898 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22899#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22900
22901 case WDI_INIT_SCAN_CON_REQ:
22902 return WLAN_HAL_INIT_SCAN_CON_REQ;
22903 case WDI_SET_POWER_PARAMS_REQ:
22904 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22905 case WDI_SET_TM_LEVEL_REQ:
22906 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22907 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22908 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022909#ifdef WLAN_FEATURE_11AC
22910 case WDI_UPDATE_VHT_OP_MODE_REQ:
22911 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22912#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022913 case WDI_GET_ROAM_RSSI_REQ:
22914 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022915 case WDI_DHCP_START_IND:
22916 return WLAN_HAL_DHCP_START_IND;
22917 case WDI_DHCP_STOP_IND:
22918 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022919#ifdef FEATURE_WLAN_LPHB
22920 case WDI_LPHB_CFG_REQ:
22921 return WLAN_HAL_LPHB_CFG_REQ;
22922#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022923 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22924 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22925 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22926 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22927
Rajeev3db91f12013-10-05 11:03:42 +053022928#ifdef FEATURE_WLAN_BATCH_SCAN
22929 case WDI_SET_BATCH_SCAN_REQ:
22930 return WLAN_HAL_BATCHSCAN_SET_REQ;
22931 case WDI_STOP_BATCH_SCAN_IND:
22932 return WLAN_HAL_BATCHSCAN_STOP_IND;
22933 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22934 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22935#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022936 case WDI_RATE_UPDATE_IND:
22937 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022938
Jeff Johnson295189b2012-06-20 16:38:30 -070022939 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022940 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022942
Jeff Johnson295189b2012-06-20 16:38:30 -070022943}/*WDI_2_HAL_REQ_TYPE*/
22944
22945/*Convert WDI response type into HAL response type*/
22946WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22947HAL_2_WDI_RSP_TYPE
22948(
22949 tHalHostMsgType halMsg
22950)
22951{
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 the chances of getting inlined*/
22954 switch( halMsg )
22955 {
22956 case WLAN_HAL_START_RSP:
22957 return WDI_START_RESP;
22958 case WLAN_HAL_STOP_RSP:
22959 return WDI_STOP_RESP;
22960 case WLAN_HAL_INIT_SCAN_RSP:
22961 return WDI_INIT_SCAN_RESP;
22962 case WLAN_HAL_START_SCAN_RSP:
22963 return WDI_START_SCAN_RESP;
22964 case WLAN_HAL_END_SCAN_RSP:
22965 return WDI_END_SCAN_RESP;
22966 case WLAN_HAL_FINISH_SCAN_RSP:
22967 return WDI_FINISH_SCAN_RESP;
22968 case WLAN_HAL_CONFIG_STA_RSP:
22969 return WDI_CONFIG_STA_RESP;
22970 case WLAN_HAL_DELETE_STA_RSP:
22971 return WDI_DEL_STA_RESP;
22972 case WLAN_HAL_CONFIG_BSS_RSP:
22973 return WDI_CONFIG_BSS_RESP;
22974 case WLAN_HAL_DELETE_BSS_RSP:
22975 return WDI_DEL_BSS_RESP;
22976 case WLAN_HAL_JOIN_RSP:
22977 return WDI_JOIN_RESP;
22978 case WLAN_HAL_POST_ASSOC_RSP:
22979 return WDI_POST_ASSOC_RESP;
22980 case WLAN_HAL_SET_BSSKEY_RSP:
22981 return WDI_SET_BSS_KEY_RESP;
22982 case WLAN_HAL_SET_STAKEY_RSP:
22983 return WDI_SET_STA_KEY_RESP;
22984 case WLAN_HAL_RMV_BSSKEY_RSP:
22985 return WDI_RMV_BSS_KEY_RESP;
22986 case WLAN_HAL_RMV_STAKEY_RSP:
22987 return WDI_RMV_STA_KEY_RESP;
22988 case WLAN_HAL_SET_BCASTKEY_RSP:
22989 return WDI_SET_STA_BCAST_KEY_RESP;
22990 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22991 // return WDI_RMV_STA_BCAST_KEY_RESP;
22992 case WLAN_HAL_ADD_TS_RSP:
22993 return WDI_ADD_TS_RESP;
22994 case WLAN_HAL_DEL_TS_RSP:
22995 return WDI_DEL_TS_RESP;
22996 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22997 return WDI_UPD_EDCA_PRMS_RESP;
22998 case WLAN_HAL_ADD_BA_RSP:
22999 return WDI_ADD_BA_RESP;
23000 case WLAN_HAL_DEL_BA_RSP:
23001 return WDI_DEL_BA_RESP;
23002#ifdef FEATURE_WLAN_CCX
23003 case WLAN_HAL_TSM_STATS_RSP:
23004 return WDI_TSM_STATS_RESP;
23005#endif
23006 case WLAN_HAL_CH_SWITCH_RSP:
23007 return WDI_CH_SWITCH_RESP;
23008 case WLAN_HAL_SET_LINK_ST_RSP:
23009 return WDI_SET_LINK_ST_RESP;
23010 case WLAN_HAL_GET_STATS_RSP:
23011 return WDI_GET_STATS_RESP;
23012 case WLAN_HAL_UPDATE_CFG_RSP:
23013 return WDI_UPDATE_CFG_RESP;
23014 case WLAN_HAL_ADD_BA_SESSION_RSP:
23015 return WDI_ADD_BA_SESSION_RESP;
23016 case WLAN_HAL_TRIGGER_BA_RSP:
23017 return WDI_TRIGGER_BA_RESP;
23018 case WLAN_HAL_UPDATE_BEACON_RSP:
23019 return WDI_UPD_BCON_PRMS_RESP;
23020 case WLAN_HAL_SEND_BEACON_RSP:
23021 return WDI_SND_BCON_RESP;
23022 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23023 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23024 /*Indications*/
23025 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23026 return WDI_HAL_RSSI_NOTIFICATION_IND;
23027 case WLAN_HAL_MISSED_BEACON_IND:
23028 return WDI_HAL_MISSED_BEACON_IND;
23029 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23030 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23031 case WLAN_HAL_MIC_FAILURE_IND:
23032 return WDI_HAL_MIC_FAILURE_IND;
23033 case WLAN_HAL_FATAL_ERROR_IND:
23034 return WDI_HAL_FATAL_ERROR_IND;
23035 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23036 return WDI_HAL_DEL_STA_IND;
23037 case WLAN_HAL_COEX_IND:
23038 return WDI_HAL_COEX_IND;
23039 case WLAN_HAL_OTA_TX_COMPL_IND:
23040 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 case WLAN_HAL_P2P_NOA_ATTR_IND:
23042 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080023043 case WLAN_HAL_P2P_NOA_START_IND:
23044 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 case WLAN_HAL_TX_PER_HIT_IND:
23046 return WDI_HAL_TX_PER_HIT_IND;
23047 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23048 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070023049 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23050 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070023051 case WLAN_HAL_SET_TX_POWER_RSP:
23052 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 case WLAN_HAL_SET_P2P_GONOA_RSP:
23054 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053023055#ifdef FEATURE_WLAN_TDLS
23056 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23057 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23058 case WLAN_HAL_TDLS_IND:
23059 return WDI_HAL_TDLS_IND;
23060#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023062 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023064 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23080 return WDI_SET_BEACON_FILTER_RESP;
23081 case WLAN_HAL_REM_BCN_FILTER_RSP:
23082 return WDI_REM_BEACON_FILTER_RESP;
23083 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23084 return WDI_SET_RSSI_THRESHOLDS_RESP;
23085 case WLAN_HAL_HOST_OFFLOAD_RSP:
23086 return WDI_HOST_OFFLOAD_RESP;
23087 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23088 return WDI_WOWL_ADD_BC_PTRN_RESP;
23089 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23090 return WDI_WOWL_DEL_BC_PTRN_RESP;
23091 case WLAN_HAL_ENTER_WOWL_RSP:
23092 return WDI_WOWL_ENTER_RESP;
23093 case WLAN_HAL_EXIT_WOWL_RSP:
23094 return WDI_WOWL_EXIT_RESP;
23095 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23096 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23097 case WLAN_HAL_DOWNLOAD_NV_RSP:
23098 return WDI_NV_DOWNLOAD_RESP;
23099 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23100 return WDI_FLUSH_AC_RESP;
23101 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23102 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 case WLAN_HAL_PROCESS_PTT_RSP:
23104 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 case WLAN_HAL_ADD_STA_SELF_RSP:
23106 return WDI_ADD_STA_SELF_RESP;
23107case WLAN_HAL_DEL_STA_SELF_RSP:
23108 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023109#ifdef FEATURE_OEM_DATA_SUPPORT
23110 case WLAN_HAL_START_OEM_DATA_RSP:
23111 return WDI_START_OEM_DATA_RESP;
23112#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 case WLAN_HAL_HOST_RESUME_RSP:
23114 return WDI_HOST_RESUME_RESP;
23115 case WLAN_HAL_KEEP_ALIVE_RSP:
23116 return WDI_KEEP_ALIVE_RESP;
23117#ifdef FEATURE_WLAN_SCAN_PNO
23118 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23119 return WDI_SET_PREF_NETWORK_RESP;
23120 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23123 return WDI_UPDATE_SCAN_PARAMS_RESP;
23124 case WLAN_HAL_PREF_NETW_FOUND_IND:
23125 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23126#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023127#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023128 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23129 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023130#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23132 return WDI_SET_TX_PER_TRACKING_RESP;
23133#ifdef WLAN_FEATURE_PACKET_FILTERING
23134 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23135 return WDI_8023_MULTICAST_LIST_RESP;
23136 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23137 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23138 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23139 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23140 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23141 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23142#endif // WLAN_FEATURE_PACKET_FILTERING
23143
23144 case WLAN_HAL_DUMP_COMMAND_RSP:
23145 return WDI_HAL_DUMP_CMD_RESP;
23146 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23147 return WDI_SET_POWER_PARAMS_RESP;
23148#ifdef WLAN_FEATURE_VOWIFI_11R
23149 case WLAN_HAL_AGGR_ADD_TS_RSP:
23150 return WDI_AGGR_ADD_TS_RESP;
23151#endif
23152
23153#ifdef WLAN_FEATURE_GTK_OFFLOAD
23154 case WLAN_HAL_GTK_OFFLOAD_RSP:
23155 return WDI_GTK_OFFLOAD_RESP;
23156 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23157 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23158#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23159#ifdef WLAN_WAKEUP_EVENTS
23160 case WLAN_HAL_WAKE_REASON_IND:
23161 return WDI_HAL_WAKE_REASON_IND;
23162#endif // WLAN_WAKEUP_EVENTS
23163
23164 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23165 return WDI_SET_TM_LEVEL_RESP;
23166 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23167 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023168#ifdef WLAN_FEATURE_11AC
23169 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23170 return WDI_UPDATE_VHT_OP_MODE_RESP;
23171#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023172#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23173 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23174 return WDI_GET_ROAM_RSSI_RESP;
23175#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023176
Leo Chang00bc9132013-08-01 19:21:11 -070023177#ifdef FEATURE_WLAN_LPHB
23178 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023179 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023180 case WLAN_HAL_LPHB_CFG_RSP:
23181 return WDI_LPHB_CFG_RESP;
23182#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023183
23184 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23185 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023186 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23187 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023188
Rajeev3db91f12013-10-05 11:03:42 +053023189#ifdef FEATURE_WLAN_BATCH_SCAN
23190 case WLAN_HAL_BATCHSCAN_SET_RSP:
23191 return WDI_SET_BATCH_SCAN_RESP;
23192 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23193 return WDI_BATCHSCAN_RESULT_IND;
23194#endif // FEATURE_WLAN_BATCH_SCAN
23195
Leo Changd95d6622013-12-15 15:18:55 -080023196#ifdef FEATURE_WLAN_CH_AVOID
23197 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23198 return WDI_HAL_CH_AVOID_IND;
23199#endif /* FEATURE_WLAN_CH_AVOID */
23200
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023202 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023203 }
23204
23205}/*HAL_2_WDI_RSP_TYPE*/
23206
23207
23208/*Convert WDI driver type into HAL driver type*/
23209WPT_STATIC WPT_INLINE tDriverType
23210WDI_2_HAL_DRV_TYPE
23211(
23212 WDI_DriverType wdiDriverType
23213)
23214{
Jeff Johnsone7245742012-09-05 17:12:55 -070023215 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 the chances of getting inlined*/
23217 switch( wdiDriverType )
23218 {
23219 case WDI_DRIVER_TYPE_PRODUCTION:
23220 return eDRIVER_TYPE_PRODUCTION;
23221 case WDI_DRIVER_TYPE_MFG:
23222 return eDRIVER_TYPE_MFG;
23223 case WDI_DRIVER_TYPE_DVT:
23224 return eDRIVER_TYPE_DVT;
23225 }
23226
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228}/*WDI_2_HAL_DRV_TYPE*/
23229
23230
23231/*Convert WDI stop reason into HAL stop reason*/
23232WPT_STATIC WPT_INLINE tHalStopType
23233WDI_2_HAL_STOP_REASON
23234(
23235 WDI_StopType wdiDriverType
23236)
23237{
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 the chances of getting inlined*/
23240 switch( wdiDriverType )
23241 {
23242 case WDI_STOP_TYPE_SYS_RESET:
23243 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023244 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23245 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 case WDI_STOP_TYPE_RF_KILL:
23247 return HAL_STOP_TYPE_RF_KILL;
23248 }
23249
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251}/*WDI_2_HAL_STOP_REASON*/
23252
23253
23254/*Convert WDI scan mode type into HAL scan mode type*/
23255WPT_STATIC WPT_INLINE eHalSysMode
23256WDI_2_HAL_SCAN_MODE
23257(
23258 WDI_ScanMode wdiScanMode
23259)
23260{
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023262 the chances of getting inlined*/
23263 switch( wdiScanMode )
23264 {
23265 case WDI_SCAN_MODE_NORMAL:
23266 return eHAL_SYS_MODE_NORMAL;
23267 case WDI_SCAN_MODE_LEARN:
23268 return eHAL_SYS_MODE_LEARN;
23269 case WDI_SCAN_MODE_SCAN:
23270 return eHAL_SYS_MODE_SCAN;
23271 case WDI_SCAN_MODE_PROMISC:
23272 return eHAL_SYS_MODE_PROMISC;
23273 case WDI_SCAN_MODE_SUSPEND_LINK:
23274 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023275 case WDI_SCAN_MODE_ROAM_SCAN:
23276 return eHAL_SYS_MODE_ROAM_SCAN;
23277 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23278 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 }
23280
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282}/*WDI_2_HAL_SCAN_MODE*/
23283
23284/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023285WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023286WDI_2_HAL_SEC_CH_OFFSET
23287(
23288 WDI_HTSecondaryChannelOffset wdiSecChOffset
23289)
23290{
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 the chances of getting inlined*/
23293 switch( wdiSecChOffset )
23294 {
23295 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23301#ifdef WLAN_FEATURE_11AC
23302 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23303 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23304 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23305 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23306 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23307 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23308 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23309 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23310 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23311 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23312 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23313 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23314 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23316#endif
23317 default:
23318 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 }
23320
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023322}/*WDI_2_HAL_SEC_CH_OFFSET*/
23323
23324/*Convert WDI BSS type into HAL BSS type*/
23325WPT_STATIC WPT_INLINE tSirBssType
23326WDI_2_HAL_BSS_TYPE
23327(
23328 WDI_BssType wdiBSSType
23329)
23330{
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 the chances of getting inlined*/
23333 switch( wdiBSSType )
23334 {
23335 case WDI_INFRASTRUCTURE_MODE:
23336 return eSIR_INFRASTRUCTURE_MODE;
23337 case WDI_INFRA_AP_MODE:
23338 return eSIR_INFRA_AP_MODE;
23339 case WDI_IBSS_MODE:
23340 return eSIR_IBSS_MODE;
23341 case WDI_BTAMP_STA_MODE:
23342 return eSIR_BTAMP_STA_MODE;
23343 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 case WDI_BSS_AUTO_MODE:
23346 return eSIR_AUTO_MODE;
23347 }
23348
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023350}/*WDI_2_HAL_BSS_TYPE*/
23351
23352/*Convert WDI NW type into HAL NW type*/
23353WPT_STATIC WPT_INLINE tSirNwType
23354WDI_2_HAL_NW_TYPE
23355(
23356 WDI_NwType wdiNWType
23357)
23358{
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 the chances of getting inlined*/
23361 switch( wdiNWType )
23362 {
23363 case WDI_11A_NW_TYPE:
23364 return eSIR_11A_NW_TYPE;
23365 case WDI_11B_NW_TYPE:
23366 return eSIR_11B_NW_TYPE;
23367 case WDI_11G_NW_TYPE:
23368 return eSIR_11G_NW_TYPE;
23369 case WDI_11N_NW_TYPE:
23370 return eSIR_11N_NW_TYPE;
23371 }
23372
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374}/*WDI_2_HAL_NW_TYPE*/
23375
23376/*Convert WDI chanel bonding type into HAL cb type*/
23377WPT_STATIC WPT_INLINE ePhyChanBondState
23378WDI_2_HAL_CB_STATE
23379(
23380 WDI_PhyChanBondState wdiCbState
23381)
23382{
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 the chances of getting inlined*/
23385 switch ( wdiCbState )
23386 {
23387 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23388 return PHY_SINGLE_CHANNEL_CENTERED;
23389 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23390 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23391 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23392 return PHY_DOUBLE_CHANNEL_CENTERED;
23393 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23394 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023395#ifdef WLAN_FEATURE_11AC
23396 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23397 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23398 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23399 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23400 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23401 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23402 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23403 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23404 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23405 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23406 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23407 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23408 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23409 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23410#endif
23411 case WDI_MAX_CB_STATE:
23412 default:
23413 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023414 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023415
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 return PHY_CHANNEL_BONDING_STATE_MAX;
23417}/*WDI_2_HAL_CB_STATE*/
23418
23419/*Convert WDI chanel bonding type into HAL cb type*/
23420WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23421WDI_2_HAL_HT_OPER_MODE
23422(
23423 WDI_HTOperatingMode wdiHTOperMode
23424)
23425{
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 the chances of getting inlined*/
23428 switch ( wdiHTOperMode )
23429 {
23430 case WDI_HT_OP_MODE_PURE:
23431 return eSIR_HT_OP_MODE_PURE;
23432 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23433 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23434 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23435 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23436 case WDI_HT_OP_MODE_MIXED:
23437 return eSIR_HT_OP_MODE_MIXED;
23438 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023439
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 return eSIR_HT_OP_MODE_MAX;
23441}/*WDI_2_HAL_HT_OPER_MODE*/
23442
23443/*Convert WDI mimo PS type into HAL mimo PS type*/
23444WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23445WDI_2_HAL_MIMO_PS
23446(
23447 WDI_HTMIMOPowerSaveState wdiHTOperMode
23448)
23449{
Jeff Johnsone7245742012-09-05 17:12:55 -070023450 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 the chances of getting inlined*/
23452 switch ( wdiHTOperMode )
23453 {
23454 case WDI_HT_MIMO_PS_STATIC:
23455 return eSIR_HT_MIMO_PS_STATIC;
23456 case WDI_HT_MIMO_PS_DYNAMIC:
23457 return eSIR_HT_MIMO_PS_DYNAMIC;
23458 case WDI_HT_MIMO_PS_NA:
23459 return eSIR_HT_MIMO_PS_NA;
23460 case WDI_HT_MIMO_PS_NO_LIMIT:
23461 return eSIR_HT_MIMO_PS_NO_LIMIT;
23462 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023463
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 return eSIR_HT_MIMO_PS_MAX;
23465}/*WDI_2_HAL_MIMO_PS*/
23466
23467/*Convert WDI ENC type into HAL ENC type*/
23468WPT_STATIC WPT_INLINE tAniEdType
23469WDI_2_HAL_ENC_TYPE
23470(
23471 WDI_EncryptType wdiEncType
23472)
23473{
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 the chances of getting inlined*/
23476 switch ( wdiEncType )
23477 {
23478 case WDI_ENCR_NONE:
23479 return eSIR_ED_NONE;
23480
23481 case WDI_ENCR_WEP40:
23482 return eSIR_ED_WEP40;
23483
23484 case WDI_ENCR_WEP104:
23485 return eSIR_ED_WEP104;
23486
23487 case WDI_ENCR_TKIP:
23488 return eSIR_ED_TKIP;
23489
23490 case WDI_ENCR_CCMP:
23491 return eSIR_ED_CCMP;
23492
23493 case WDI_ENCR_AES_128_CMAC:
23494 return eSIR_ED_AES_128_CMAC;
23495#if defined(FEATURE_WLAN_WAPI)
23496 case WDI_ENCR_WPI:
23497 return eSIR_ED_WPI;
23498#endif
23499 default:
23500 return eSIR_ED_NOT_IMPLEMENTED;
23501 }
23502
23503}/*WDI_2_HAL_ENC_TYPE*/
23504
23505/*Convert WDI WEP type into HAL WEP type*/
23506WPT_STATIC WPT_INLINE tAniWepType
23507WDI_2_HAL_WEP_TYPE
23508(
23509 WDI_WepType wdiWEPType
23510)
23511{
Jeff Johnsone7245742012-09-05 17:12:55 -070023512 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 the chances of getting inlined*/
23514 switch ( wdiWEPType )
23515 {
23516 case WDI_WEP_STATIC:
23517 return eSIR_WEP_STATIC;
23518
23519 case WDI_WEP_DYNAMIC:
23520 return eSIR_WEP_DYNAMIC;
23521 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023522
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 return eSIR_WEP_MAX;
23524}/*WDI_2_HAL_WEP_TYPE*/
23525
23526WPT_STATIC WPT_INLINE tSirLinkState
23527WDI_2_HAL_LINK_STATE
23528(
23529 WDI_LinkStateType wdiLinkState
23530)
23531{
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 the chances of getting inlined*/
23534 switch ( wdiLinkState )
23535 {
23536 case WDI_LINK_IDLE_STATE:
23537 return eSIR_LINK_IDLE_STATE;
23538
23539 case WDI_LINK_PREASSOC_STATE:
23540 return eSIR_LINK_PREASSOC_STATE;
23541
23542 case WDI_LINK_POSTASSOC_STATE:
23543 return eSIR_LINK_POSTASSOC_STATE;
23544
23545 case WDI_LINK_AP_STATE:
23546 return eSIR_LINK_AP_STATE;
23547
23548 case WDI_LINK_IBSS_STATE:
23549 return eSIR_LINK_IBSS_STATE;
23550
23551 case WDI_LINK_BTAMP_PREASSOC_STATE:
23552 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23553
23554 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23555 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23556
23557 case WDI_LINK_BTAMP_AP_STATE:
23558 return eSIR_LINK_BTAMP_AP_STATE;
23559
23560 case WDI_LINK_BTAMP_STA_STATE:
23561 return eSIR_LINK_BTAMP_STA_STATE;
23562
23563 case WDI_LINK_LEARN_STATE:
23564 return eSIR_LINK_LEARN_STATE;
23565
23566 case WDI_LINK_SCAN_STATE:
23567 return eSIR_LINK_SCAN_STATE;
23568
23569 case WDI_LINK_FINISH_SCAN_STATE:
23570 return eSIR_LINK_FINISH_SCAN_STATE;
23571
23572 case WDI_LINK_INIT_CAL_STATE:
23573 return eSIR_LINK_INIT_CAL_STATE;
23574
23575 case WDI_LINK_FINISH_CAL_STATE:
23576 return eSIR_LINK_FINISH_CAL_STATE;
23577
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 case WDI_LINK_LISTEN_STATE:
23579 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023581 case WDI_LINK_SEND_ACTION_STATE:
23582 return eSIR_LINK_SEND_ACTION_STATE;
23583
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 default:
23585 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023587}
23588
Jeff Johnsone7245742012-09-05 17:12:55 -070023589/*Translate a STA Context from WDI into HAL*/
23590WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023591void
23592WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023593(
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 tConfigStaParams* phalConfigSta,
23595 WDI_ConfigStaReqInfoType* pwdiConfigSta
23596)
23597{
23598 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023599#ifdef WLAN_FEATURE_11AC
23600 /* Get the Version 1 Handler */
23601 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23602 if (WDI_getFwWlanFeatCaps(DOT11AC))
23603 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023604 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023605 }
23606#endif
23607 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 the chances of getting inlined*/
23609
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 wpalMemoryCopy(phalConfigSta->bssId,
23611 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23612
23613 wpalMemoryCopy(phalConfigSta->staMac,
23614 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023615
23616 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23617 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23618 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23619 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23620 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23621 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23622 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23623 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23624 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23625 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23626 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23627 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23628 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23629 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23630 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23631 phalConfigSta->action = pwdiConfigSta->wdiAction;
23632 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23633 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23634 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23635 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23636 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23637 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23638 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023639
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23641
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 pwdiConfigSta->wdiSupportedRates.opRateMode;
23644 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23645 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23648 }
23649 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23650 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023651 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23653 }
23654 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23655 {
23656 phalConfigSta->supportedRates.aniLegacyRates[i] =
23657 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23658 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23661 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23662 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23665 }
23666 phalConfigSta->supportedRates.rxHighestDataRate =
23667 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23668
Jeff Johnsone7245742012-09-05 17:12:55 -070023669#ifdef WLAN_FEATURE_11AC
23670 if(phalConfigSta_V1 != NULL)
23671 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023672 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23673 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23674 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23675 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023676 }
23677#endif
23678
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023680
Jeff Johnsone7245742012-09-05 17:12:55 -070023681#ifdef WLAN_FEATURE_11AC
23682 if(phalConfigSta_V1 != NULL)
23683 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023684 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23685 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023686 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023687 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23688 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23689
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 }
23691#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023692}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023693
23694/*Translate a Rate set info from WDI into HAL*/
23695WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023696WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023697(
Jeff Johnson295189b2012-06-20 16:38:30 -070023698 tSirMacRateSet* pHalRateSet,
23699 WDI_RateSet* pwdiRateSet
23700)
23701{
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23704
23705 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23706 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23707
23708 for ( i = 0; i < pHalRateSet->numRates; i++ )
23709 {
23710 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23711 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023712
Jeff Johnson295189b2012-06-20 16:38:30 -070023713}/*WDI_CopyWDIRateSetToHALRateSet*/
23714
23715
23716/*Translate an EDCA Parameter Record from WDI into HAL*/
23717WPT_STATIC WPT_INLINE void
23718WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023719(
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 tSirMacEdcaParamRecord* phalEdcaParam,
23721 WDI_EdcaParamRecord* pWDIEdcaParam
23722)
23723{
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 the chances of getting inlined*/
23726
23727 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23728 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23729 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23730 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23731
23732 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23733 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23734 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23735}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23736
23737
23738/*Copy a management frame header from WDI fmt into HAL fmt*/
23739WPT_STATIC WPT_INLINE void
23740WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23741(
23742 tSirMacMgmtHdr* pmacMgmtHdr,
23743 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23744)
23745{
23746 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23747 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23748 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23749 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23750 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23751 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23752 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23753 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23754 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23755 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23756 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23757
23758 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23759 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23760
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 pwdiMacMgmtHdr->bssId, 6);
23767
23768 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23769 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23770 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23771
23772}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23773
23774
23775/*Copy config bss parameters from WDI fmt into HAL fmt*/
23776WPT_STATIC WPT_INLINE void
23777WDI_CopyWDIConfigBSSToHALConfigBSS
23778(
23779 tConfigBssParams* phalConfigBSS,
23780 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23781)
23782{
23783
23784 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023785#ifdef WLAN_FEATURE_11AC
23786 /* Get the Version 1 Handler */
23787 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23788 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023789 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023790#endif
23791
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 wpalMemoryCopy( phalConfigBSS->bssId,
23793 pwdiConfigBSS->macBSSID,
23794 WDI_MAC_ADDR_LEN);
23795
23796#ifdef HAL_SELF_STA_PER_BSS
23797 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23798 pwdiConfigBSS->macSelfAddr,
23799 WDI_MAC_ADDR_LEN);
23800#endif
23801
23802 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23803
23804 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23805 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23806
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 pwdiConfigBSS->ucShortSlotTimeSupported;
23809 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23810 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23811 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23812 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23813 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023814 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23816 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23817 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23818 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23819 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23820 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23821 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23822 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23823 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23824 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23825 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23826
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 phalConfigBSS->htOperMode =
23828 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023829
23830 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23831 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23832 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23833 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23834
23835#ifdef WLAN_FEATURE_VOWIFI
23836 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23837#endif
23838
23839 /*! Used 32 as magic number because that is how the ssid is declared inside the
23840 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23843 pwdiConfigBSS->wdiSSID.ucLength : 32;
23844 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 pwdiConfigBSS->wdiSSID.sSSID,
23846 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023847
23848 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23849 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023850
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23852 &pwdiConfigBSS->wdiRateSet);
23853
23854 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23855
23856 if(phalConfigBSS->edcaParamsValid)
23857 {
23858 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23859 &pwdiConfigBSS->wdiBEEDCAParams);
23860 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23861 &pwdiConfigBSS->wdiBKEDCAParams);
23862 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23863 &pwdiConfigBSS->wdiVIEDCAParams);
23864 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23865 &pwdiConfigBSS->wdiVOEDCAParams);
23866 }
23867
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869
23870 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23871
23872#ifdef WLAN_FEATURE_VOWIFI_11R
23873
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023876
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 if( phalConfigBSS->extSetStaKeyParamValid )
23878 {
23879 /*-----------------------------------------------------------------------
23880 Copy the STA Key parameters into the HAL message
23881 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23884
Jeff Johnsone7245742012-09-05 17:12:55 -070023885 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23887
23888 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23889
23890 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23891
23892 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23893
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23895 keyIndex++)
23896 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023897 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23899 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23900 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23901 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23902 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23903 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23910 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023912 WDI_MAX_KEY_LENGTH);
23913 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 }
23915 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23916 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 sizeof(phalConfigBSS->extSetStaKeyParam) );
23919 }
23920
23921#endif /*WLAN_FEATURE_VOWIFI_11R*/
23922
Jeff Johnsone7245742012-09-05 17:12:55 -070023923#ifdef WLAN_FEATURE_11AC
23924 if(phalConfigBSS_V1 != NULL)
23925 {
23926 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23927 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23928 }
23929#endif
23930
Jeff Johnson295189b2012-06-20 16:38:30 -070023931}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23932
23933
Jeff Johnsone7245742012-09-05 17:12:55 -070023934/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023935 pointed to by user data */
23936WPT_STATIC WPT_INLINE void
23937WDI_ExtractRequestCBFromEvent
23938(
23939 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 void** ppUserData
23942)
23943{
23944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23945 switch ( pEvent->wdiRequest )
23946 {
23947 case WDI_START_REQ:
23948 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23949 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23950 break;
23951 case WDI_STOP_REQ:
23952 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23953 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23954 break;
23955 case WDI_INIT_SCAN_REQ:
23956 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23957 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23958 break;
23959 case WDI_START_SCAN_REQ:
23960 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23961 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23962 break;
23963 case WDI_END_SCAN_REQ:
23964 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23965 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23966 break;
23967 case WDI_FINISH_SCAN_REQ:
23968 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23969 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23970 break;
23971 case WDI_JOIN_REQ:
23972 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23973 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23974 break;
23975 case WDI_CONFIG_BSS_REQ:
23976 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23977 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23978 break;
23979 case WDI_DEL_BSS_REQ:
23980 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23981 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23982 break;
23983 case WDI_POST_ASSOC_REQ:
23984 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23985 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23986 break;
23987 case WDI_DEL_STA_REQ:
23988 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23989 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23990 break;
23991 case WDI_DEL_STA_SELF_REQ:
23992 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23993 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23994 break;
23995
23996 case WDI_SET_BSS_KEY_REQ:
23997 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23998 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23999 break;
24000 case WDI_RMV_BSS_KEY_REQ:
24001 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24002 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24003 break;
24004 case WDI_SET_STA_KEY_REQ:
24005 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24006 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24007 break;
24008 case WDI_RMV_STA_KEY_REQ:
24009 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24010 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24011 break;
24012 case WDI_ADD_TS_REQ:
24013 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24014 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24015 break;
24016 case WDI_DEL_TS_REQ:
24017 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24018 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24019 break;
24020 case WDI_UPD_EDCA_PRMS_REQ:
24021 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24022 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24023 break;
24024 case WDI_ADD_BA_SESSION_REQ:
24025 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24026 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24027 break;
24028 case WDI_DEL_BA_REQ:
24029 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24030 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24031 break;
24032#ifdef FEATURE_WLAN_CCX
24033 case WDI_TSM_STATS_REQ:
24034 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24035 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24036 break;
24037#endif
24038 case WDI_CH_SWITCH_REQ:
24039 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24040 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24041 break;
24042 case WDI_CONFIG_STA_REQ:
24043 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24044 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24045 break;
24046 case WDI_SET_LINK_ST_REQ:
24047 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24048 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24049 break;
24050 case WDI_GET_STATS_REQ:
24051 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24052 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24053 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080024054#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
24055 case WDI_GET_ROAM_RSSI_REQ:
24056 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24057 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24058 break;
24059#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 case WDI_UPDATE_CFG_REQ:
24061 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24062 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24063 break;
24064 case WDI_ADD_BA_REQ:
24065 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24066 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24067 break;
24068 case WDI_TRIGGER_BA_REQ:
24069 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24070 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24071 break;
24072 case WDI_UPD_BCON_PRMS_REQ:
24073 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24074 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24075 break;
24076 case WDI_SND_BCON_REQ:
24077 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24078 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24079 break;
24080 case WDI_ENTER_BMPS_REQ:
24081 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24082 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24083 break;
24084 case WDI_EXIT_BMPS_REQ:
24085 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24086 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24087 break;
24088 case WDI_ENTER_UAPSD_REQ:
24089 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24091 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024092 case WDI_EXIT_UAPSD_REQ:
24093 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24094 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24095 break;
24096 case WDI_SET_UAPSD_PARAM_REQ:
24097 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24098 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24099 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 case WDI_UPDATE_UAPSD_PARAM_REQ:
24101 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24102 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24103 break;
24104 case WDI_CONFIGURE_RXP_FILTER_REQ:
24105 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24106 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24107 break;
24108 case WDI_SET_BEACON_FILTER_REQ:
24109 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24110 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24111 break;
24112 case WDI_REM_BEACON_FILTER_REQ:
24113 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24114 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024115 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 case WDI_SET_RSSI_THRESHOLDS_REQ:
24117 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24118 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24119 break;
24120 case WDI_HOST_OFFLOAD_REQ:
24121 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24122 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24123 break;
24124 case WDI_WOWL_ADD_BC_PTRN_REQ:
24125 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24126 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24127 break;
24128 case WDI_WOWL_DEL_BC_PTRN_REQ:
24129 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24130 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24131 break;
24132 case WDI_WOWL_ENTER_REQ:
24133 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24134 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24135 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024136 case WDI_WOWL_EXIT_REQ:
24137 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24138 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24139 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24141 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24142 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24143 break;
24144 case WDI_FLUSH_AC_REQ:
24145 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24146 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24147 break;
24148 case WDI_BTAMP_EVENT_REQ:
24149 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24150 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24151 break;
24152 case WDI_KEEP_ALIVE_REQ:
24153 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24154 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24155 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024156#if defined FEATURE_WLAN_SCAN_PNO
24157 case WDI_SET_PREF_NETWORK_REQ:
24158 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24159 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24160 break;
24161 case WDI_SET_RSSI_FILTER_REQ:
24162 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24163 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24164 break;
24165 case WDI_UPDATE_SCAN_PARAMS_REQ:
24166 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24167 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24168 break;
24169#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 case WDI_SET_TX_PER_TRACKING_REQ:
24171 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24172 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024173 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024174#if defined WLAN_FEATURE_PACKET_FILTERING
24175 case WDI_8023_MULTICAST_LIST_REQ:
24176 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24177 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24178 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024179 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24180 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24181 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24182 break;
24183 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24184 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24185 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24186 break;
24187 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24188 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24189 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24190 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024191#endif
24192 case WDI_SET_POWER_PARAMS_REQ:
24193 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24194 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24195 break;
24196#if defined WLAN_FEATURE_GTK_OFFLOAD
24197 case WDI_GTK_OFFLOAD_REQ:
24198 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24199 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24200 break;
24201 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24202 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24203 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24204 break;
24205#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024206
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 default:
24208 *ppfnReqCB = NULL;
24209 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024211 }
24212}/*WDI_ExtractRequestCBFromEvent*/
24213
24214
24215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 frame xtl is enabled for a particular STA.
24218
24219 WDI_PostAssocReq must have been called.
24220
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 @param uSTAIdx: STA index
24222
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 @see WDI_PostAssocReq
24224 @return Result of the function call
24225*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024226wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024227WDI_IsHwFrameTxTranslationCapable
24228(
24229 wpt_uint8 uSTAIdx
24230)
24231{
Jeff Johnsone7245742012-09-05 17:12:55 -070024232 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 uma value*/
24234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 ------------------------------------------------------------------------*/
24237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24238 {
24239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24240 "WDI API call before module is initialized - Fail request");
24241
Jeff Johnsone7245742012-09-05 17:12:55 -070024242 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024243 }
24244
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024245#ifdef WLAN_SOFTAP_VSTA_FEATURE
24246 if (IS_VSTA_IDX(uSTAIdx))
24247 {
24248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24249 "STA %d is a Virtual STA, "
24250 "HW frame translation disabled", uSTAIdx);
24251 return eWLAN_PAL_FALSE;
24252 }
24253#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024254
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 return gWDICb.bFrameTransEnabled;
24256}/*WDI_IsHwFrameTxTranslationCapable*/
24257
24258#ifdef FEATURE_WLAN_SCAN_PNO
24259/**
24260 @brief WDI_SetPreferredNetworkList
24261
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024264
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 wdiPNOScanCb: callback for passing back the response
24266 of the Set PNO operation received from the
24267 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024268
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 callback
24271
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 @return Result of the function call
24273*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024274WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024275WDI_SetPreferredNetworkReq
24276(
24277 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24278 WDI_PNOScanCb wdiPNOScanCb,
24279 void* pUserData
24280)
24281{
24282 WDI_EventInfoType wdiEventData = {{0}};
24283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24284
24285 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 ------------------------------------------------------------------------*/
24288 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24289 {
24290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24291 "WDI API call before module is initialized - Fail request");
24292
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 }
24295
24296 /*------------------------------------------------------------------------
24297 Fill in Event data and post to the Main FSM
24298 ------------------------------------------------------------------------*/
24299 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024302 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 wdiEventData.pUserData = pUserData;
24304
24305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24306}
24307
24308
24309/**
24310 @brief WDI_SetRssiFilterReq
24311
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024314
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 wdiRssiFilterCb: callback for passing back the response
24316 of the Set RSSI Filter operation received from the
24317 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024318
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024320 callback
24321
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 @return Result of the function call
24323*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024324WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024325WDI_SetRssiFilterReq
24326(
24327 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24328 WDI_RssiFilterCb wdiRssiFilterCb,
24329 void* pUserData
24330)
24331{
24332 WDI_EventInfoType wdiEventData = {{0}};
24333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24334
24335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 ------------------------------------------------------------------------*/
24338 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24339 {
24340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24341 "WDI API call before module is initialized - Fail request");
24342
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 }
24345
24346 /*------------------------------------------------------------------------
24347 Fill in Event data and post to the Main FSM
24348 ------------------------------------------------------------------------*/
24349 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024350 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 wdiEventData.pUserData = pUserData;
24354
24355 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24356}/*WDI_SetRssiFilterReq*/
24357
24358/**
24359 @brief WDI_UpdateScanParamsReq
24360
Jeff Johnsone7245742012-09-05 17:12:55 -070024361 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024363
Jeff Johnson295189b2012-06-20 16:38:30 -070024364 wdiUpdateScanParamsCb: callback for passing back the response
24365 of the Set PNO operation received from the
24366 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024367
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 callback
24370
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 @return Result of the function call
24372*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024373WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024374WDI_UpdateScanParamsReq
24375(
24376 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24377 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24378 void* pUserData
24379)
24380{
24381 WDI_EventInfoType wdiEventData = {{0}};
24382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24383
24384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 ------------------------------------------------------------------------*/
24387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24388 {
24389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24390 "WDI API call before module is initialized - Fail request");
24391
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 }
24394
24395 /*------------------------------------------------------------------------
24396 Fill in Event data and post to the Main FSM
24397 ------------------------------------------------------------------------*/
24398 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 wdiEventData.pUserData = pUserData;
24403
24404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24405}
24406
24407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024410
24411 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 pwdiPNOScanReqParams: pointer to the info received
24413 from upper layers
24414 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 and its size
24416
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 @return Result of the function call
24418*/
24419
24420WDI_Status
24421WDI_PackPreferredNetworkList
24422(
24423 WDI_ControlBlockType* pWDICtx,
24424 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24425 wpt_uint8** ppSendBuffer,
24426 wpt_uint16* pSize
24427)
24428{
Jeff Johnsone7245742012-09-05 17:12:55 -070024429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 wpt_uint16 usDataOffset = 0;
24431 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024432 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 /*-----------------------------------------------------------------------
24435 Get message buffer
24436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024438 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024440 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 {
24442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024443 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 pwdiPNOScanReqParams);
24445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 }
24448
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024449 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24450
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 /*-------------------------------------------------------------------------
24452 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24453 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024454 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024456 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24458
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024459 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24464
24465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24468 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24469 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24470
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024471 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 {
24473 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024474 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24476
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024477 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024479 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024480
24481 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024482 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024484
24485 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024486 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024488
Jeff Johnsone7245742012-09-05 17:12:55 -070024489 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024490 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024491 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024492 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24493 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24494 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24495 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024496
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024497 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024499 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
24501 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024502 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24504
24505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024506 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024507 pPrefNetwListParams->aNetworks[i].ssId.length,
24508 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 }
24510
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024511 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24514 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24515 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24516
24517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024519 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24521 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24522
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024523 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024525 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024527 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24529 }
24530
24531 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024532 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24534 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24535 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024538 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024539 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024540 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024541
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024542 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24544 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24545 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024547
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024548 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024550 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 /*Set the output values*/
24553 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555
24556 return WDI_STATUS_SUCCESS;
24557}/*WDI_PackPreferredNetworkList*/
24558
24559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024560 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024562
24563 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 pwdiPNOScanReqParams: pointer to the info received
24565 from upper layers
24566 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024567 and its size
24568
Jeff Johnson295189b2012-06-20 16:38:30 -070024569 @return Result of the function call
24570*/
24571
24572WDI_Status
24573WDI_PackPreferredNetworkListNew
24574(
24575 WDI_ControlBlockType* pWDICtx,
24576 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24577 wpt_uint8** ppSendBuffer,
24578 wpt_uint16* pSize
24579)
24580{
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 wpt_uint16 usDataOffset = 0;
24583 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024584 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024586
24587 /*-----------------------------------------------------------------------
24588 Get message buffer
24589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024591 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024593 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 {
24595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024596 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 pwdiPNOScanReqParams);
24598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 }
24601
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024602 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24603
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 /*-------------------------------------------------------------------------
24605 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24606 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024607 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024609 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24611
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024612 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24617
24618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24621 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24622 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24623
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024624 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 {
24626 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024627 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24629
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024630 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024632 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024633
24634 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024635 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637
24638 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024639 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024641
24642 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024643 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024645
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024648 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24650
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024651 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024653 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024654
24655 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024656 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24658
24659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024661 pPrefNetwListParams->aNetworks[i].ssId.length,
24662 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 }
24664
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024665 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024666 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24668 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24669 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24670
24671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024673 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024674 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24675 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24676
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024677 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024679 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024680 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024681 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24683 }
24684
24685 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024686 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24688 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24689 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024691
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024692 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024694 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024695
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024696 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24698 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24699 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024701
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024702 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024704 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024705
Jeff Johnson295189b2012-06-20 16:38:30 -070024706
24707 /*Set the output values*/
24708 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710
24711 return WDI_STATUS_SUCCESS;
24712}/*WDI_PackPreferredNetworkListNew*/
24713
24714/**
24715 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024716
24717 @param pWDICtx: pointer to the WLAN DAL context
24718 pEventData: pointer to the event information structure
24719
Jeff Johnson295189b2012-06-20 16:38:30 -070024720 @return Result of the function call
24721*/
24722WDI_Status
24723WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024724(
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 WDI_ControlBlockType* pWDICtx,
24726 WDI_EventInfoType* pEventData
24727)
24728{
24729 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24730 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024734
24735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 -------------------------------------------------------------------------*/
24738 if (( NULL == pEventData ) ||
24739 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24740 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24741 {
24742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024746 }
24747
24748 /*-------------------------------------------------------------------------
24749 Pack the PNO request structure based on version
24750 -------------------------------------------------------------------------*/
24751 if ( pWDICtx->wdiPNOVersion > 0 )
24752 {
24753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024754 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 pWDICtx->wdiPNOVersion);
24756
24757 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24758 &pSendBuffer, &usSendSize);
24759 }
24760 else
24761 {
24762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024763 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 pWDICtx->wdiPNOVersion);
24765
24766 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24767 &pSendBuffer, &usSendSize);
24768 }
24769
24770 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24771 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24772 {
24773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024774 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 }
24778
24779 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024781
24782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024783 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24786 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024787}
24788
24789/**
24790 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024791
24792 @param pWDICtx: pointer to the WLAN DAL context
24793 pEventData: pointer to the event information structure
24794
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 @see
24796 @return Result of the function call
24797*/
24798WDI_Status
24799WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024800(
Jeff Johnson295189b2012-06-20 16:38:30 -070024801 WDI_ControlBlockType* pWDICtx,
24802 WDI_EventInfoType* pEventData
24803)
24804{
24805 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24806 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024807 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024808 wpt_uint16 usDataOffset = 0;
24809 wpt_uint16 usSendSize = 0;
24810 wpt_uint8 ucRssiThreshold;
24811
24812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024814 -------------------------------------------------------------------------*/
24815 if (( NULL == pEventData ) ||
24816 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24817 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24818 {
24819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024823 }
24824
24825 /*-----------------------------------------------------------------------
24826 Get message buffer
24827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 sizeof(ucRssiThreshold),
24830 &pSendBuffer, &usDataOffset, &usSendSize))||
24831 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24832 {
24833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024834 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024838 }
24839
24840 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24841
Jeff Johnsone7245742012-09-05 17:12:55 -070024842 wpalMemoryCopy( pSendBuffer+usDataOffset,
24843 &ucRssiThreshold,
24844 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024845
24846 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024847 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024848
24849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024850 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24853 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024854}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024855#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24856/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024857 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024858
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024859 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024860 by the Device Interface
24861
24862 wdiRoamOffloadScancb: callback for passing back the response
24863 of the Roam Candidate Lookup Req operation received from the
24864 device
24865
24866 pUserData: user data will be passed back with the
24867 callback
24868 @return Result of the function call
24869*/
24870WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024871WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024872(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024873 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024874 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24875 void* pUserData
24876)
24877{
24878 WDI_EventInfoType wdiEventData = {{0}};
24879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24880
24881 /*------------------------------------------------------------------------
24882 Sanity Check
24883 ------------------------------------------------------------------------*/
24884 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24885 {
24886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24887 "WDI API call before module is initialized - Fail request");
24888
24889 return WDI_STATUS_E_NOT_ALLOWED;
24890 }
24891
24892 /*------------------------------------------------------------------------
24893 Fill in Event data and post to the Main FSM
24894 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024895 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24896 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24897 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024898 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24899 wdiEventData.pUserData = pUserData;
24900
24901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24902}
24903
24904void
24905WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24906{
24907 switch (wdiEdType)
24908 {
24909 case WDI_ED_NONE:
24910 *EdType = eED_NONE;
24911 break;
24912 case WDI_ED_WEP40:
24913 case WDI_ED_WEP104:
24914 *EdType = eED_WEP;
24915 break;
24916 case WDI_ED_TKIP:
24917 *EdType = eED_TKIP;
24918 break;
24919 case WDI_ED_CCMP:
24920#ifdef WLAN_FEATURE_11W
24921 case WDI_ED_AES_128_CMAC:
24922#endif
24923 *EdType = eED_CCMP;
24924 break;
24925#ifdef FEATURE_WLAN_WAPI
24926 case WDI_ED_WPI:
24927 *EdType = eED_WPI;
24928 break;
24929#endif
24930 case WDI_ED_ANY:
24931 *EdType = eED_ANY;
24932 break;
24933
24934 default:
24935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24936 "%s: Unknown Encryption Type", __func__);
24937 break;
24938 }
24939}
24940
24941/**
24942 @brief Helper function to pack Start Roam Candidate Lookup
24943 Request parameters
24944
24945 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024946 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024947 from upper layers
24948 ppSendBuffer, pSize - out pointers of the packed buffer
24949 and its size
24950
24951 @return Result of the function call
24952*/
24953
24954WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024955WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024956(
24957 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024958 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024959 wpt_uint8** ppSendBuffer,
24960 wpt_uint16* pSize
24961)
24962{
24963 wpt_uint8* pSendBuffer = NULL;
24964 wpt_uint16 usDataOffset = 0;
24965 wpt_uint16 usSendSize = 0;
24966 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24967 wpt_uint8 i;
24968 /*-----------------------------------------------------------------------
24969 Get message buffer
24970 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024972 sizeof(tRoamCandidateListParams),
24973 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024974 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024975 {
24976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024977 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024978 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024979 WDI_ASSERT(0);
24980 return WDI_STATUS_E_FAILURE;
24981 }
24982 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024983 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024984 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024985 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024986 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024987 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024988 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024989 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024990 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024991 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024992 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024993
24994 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024995 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024996 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024997 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024998 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24999 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025000 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25001 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25002 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25003 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25004 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu2ce47b32014-01-09 21:55:37 -080025005 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025006 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080025007 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025008 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25009 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25010 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25011 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25012 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25013 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25014 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
25015 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025016 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025017 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25018 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25019 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025020
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25022 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25023 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25024 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25025 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25026 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080025027 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025028 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25029 pRoamCandidateListParams->RoamScanOffloadEnabled,
25030 pRoamCandidateListParams->Command,
25031 pRoamCandidateListParams->StartScanReason,
25032 pRoamCandidateListParams->NeighborScanTimerPeriod,
25033 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25034 pRoamCandidateListParams->NeighborScanChannelMinTime,
25035 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25036 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25037 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25038 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25039 pRoamCandidateListParams->ConnectedNetwork.authentication,
25040 pRoamCandidateListParams->ConnectedNetwork.encryption,
25041 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25042 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25043 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025044 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025045 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025046 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025047 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025048 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25049 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025050 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025051 pRoamCandidateListParams->us24GProbeSize);
25052 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025053 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025054 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025055 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025056 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25057 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025058 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025059 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025060 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25061 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25062 pRoamCandidateListParams->nProbes =
25063 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25064 pRoamCandidateListParams->HomeAwayTime =
25065 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025067 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25068 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025070 }
25071
25072
25073 /*Set the output values*/
25074 *ppSendBuffer = pSendBuffer;
25075 *pSize = usSendSize;
25076 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025077}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025078
25079/**
25080 @brief Process Start Roam Candidate Lookup Request function
25081
25082 @param pWDICtx: pointer to the WLAN DAL context
25083 pEventData: pointer to the event information structure
25084
25085 @return Result of the function call
25086*/
25087WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025088WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025089(
25090 WDI_ControlBlockType* pWDICtx,
25091 WDI_EventInfoType* pEventData
25092)
25093{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025094 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025095 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25096 wpt_uint8* pSendBuffer = NULL;
25097 wpt_uint16 usSendSize = 0;
25098 WDI_Status wdiStatus;
25099 /*-------------------------------------------------------------------------
25100 Sanity check
25101 -------------------------------------------------------------------------*/
25102 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025103 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025104 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
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 /*-------------------------------------------------------------------------
25113 Pack the Start Roam Candidate Lookup request structure based on version
25114 -------------------------------------------------------------------------*/
25115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25116 "%s: Packing Roam Candidate Lookup request ", __func__);
25117
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025118 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025119 &pSendBuffer, &usSendSize);
25120
25121 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25122 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25123 {
25124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25125 "%s: failed to pack request parameters", __func__);
25126 WDI_ASSERT(0);
25127 return wdiStatus;
25128 }
25129
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025130 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25131 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025132
25133 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025134 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025135 -------------------------------------------------------------------------*/
25136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025137 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025138}
25139
25140/**
25141 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25142 response is being received over the bus from HAL)
25143
25144 @param pWDICtx: pointer to the WLAN DAL context
25145 pEventData: pointer to the event information structure
25146
25147 @see
25148 @return Result of the function call
25149*/
25150WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025151WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025152(
25153 WDI_ControlBlockType* pWDICtx,
25154 WDI_EventInfoType* pEventData
25155)
25156{
25157 WDI_Status wdiStatus;
25158 eHalStatus halStatus;
25159 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25160
25161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25162
25163 /*-------------------------------------------------------------------------
25164 Sanity check
25165 -------------------------------------------------------------------------*/
25166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25167 ( NULL == pEventData->pEventData ))
25168 {
25169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25170 "%s: Invalid parameters", __func__);
25171 WDI_ASSERT(0);
25172 return WDI_STATUS_E_FAILURE;
25173 }
25174
25175 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25176
25177 /*-------------------------------------------------------------------------
25178 Extract response and send it to UMAC
25179 -------------------------------------------------------------------------*/
25180 halStatus = *((eHalStatus*)pEventData->pEventData);
25181 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25182
25183 /*Notify UMAC*/
25184 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25185
25186 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025187}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025188#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025189
25190/**
25191 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025192
25193 @param pWDICtx: pointer to the WLAN DAL context
25194 pEventData: pointer to the event information structure
25195
Jeff Johnson295189b2012-06-20 16:38:30 -070025196 @see
25197 @return Result of the function call
25198*/
25199WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025200WDI_PackUpdateScanParamsReq
25201(
25202 WDI_ControlBlockType* pWDICtx,
25203 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25204 wpt_uint8** ppSendBuffer,
25205 wpt_uint16* pSize
25206)
25207{
25208 wpt_uint8* pSendBuffer = NULL;
25209 wpt_uint16 usDataOffset = 0;
25210 wpt_uint16 usSendSize = 0;
25211 tUpdateScanParams updateScanParams = {0};
25212
25213
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025215 "Begin WDI Update Scan Parameters Old Style Params");
25216 /*-----------------------------------------------------------------------
25217 Get message buffer
25218 -----------------------------------------------------------------------*/
25219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25220 sizeof(updateScanParams),
25221 &pSendBuffer, &usDataOffset, &usSendSize))||
25222 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25223 {
25224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025225 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025226 pwdiUpdateScanParams);
25227 WDI_ASSERT(0);
25228 return WDI_STATUS_E_FAILURE;
25229 }
25230
25231 //
25232 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25233 //
25234
25235 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25236 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25237
25238 updateScanParams.ucChannelCount =
25239 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25240 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25241 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25242 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25243
25244 wpalMemoryCopy( updateScanParams.aChannels,
25245 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25246 updateScanParams.ucChannelCount);
25247
25248
25249 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25250 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25251 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25252 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25253 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25254
25255 wpalMemoryCopy( pSendBuffer+usDataOffset,
25256 &updateScanParams,
25257 sizeof(updateScanParams));
25258
25259 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25260 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25261
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025263 "End Update Scan Parameters Old Style");
25264
25265 /*Set the output values*/
25266 *ppSendBuffer = pSendBuffer;
25267 *pSize = usSendSize;
25268
25269 return WDI_STATUS_SUCCESS;
25270}
25271
25272/**
25273 @brief Process Update Scan Params function
25274
25275 @param pWDICtx: pointer to the WLAN DAL context
25276 pEventData: pointer to the event information structure
25277
25278 @see
25279 @return Result of the function call
25280*/
25281WDI_Status
25282WDI_PackUpdateScanParamsReqEx
25283(
25284 WDI_ControlBlockType* pWDICtx,
25285 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25286 wpt_uint8** ppSendBuffer,
25287 wpt_uint16* pSize
25288)
25289{
25290 wpt_uint8* pSendBuffer = NULL;
25291 wpt_uint16 usDataOffset = 0;
25292 wpt_uint16 usSendSize = 0;
25293 tUpdateScanParamsEx updateScanParams = {0};
25294
25295
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025296 /*-----------------------------------------------------------------------
25297 Get message buffer
25298 -----------------------------------------------------------------------*/
25299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25300 sizeof(updateScanParams),
25301 &pSendBuffer, &usDataOffset, &usSendSize))||
25302 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25303 {
25304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025305 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025306 pwdiUpdateScanParams);
25307 WDI_ASSERT(0);
25308 return WDI_STATUS_E_FAILURE;
25309 }
25310
25311 //
25312 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25313 //
25314
25315 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25316 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25317
25318 updateScanParams.ucChannelCount =
25319 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25320 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25321 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25322 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25323
25324 wpalMemoryCopy( updateScanParams.aChannels,
25325 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25326 updateScanParams.ucChannelCount);
25327
25328
25329 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25330 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25331 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25332 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25333 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25334
25335 wpalMemoryCopy( pSendBuffer+usDataOffset,
25336 &updateScanParams,
25337 sizeof(updateScanParams));
25338
25339 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25340 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25341
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025342 /*Set the output values*/
25343 *ppSendBuffer = pSendBuffer;
25344 *pSize = usSendSize;
25345
25346 return WDI_STATUS_SUCCESS;
25347}
25348
25349/**
25350 @brief Process Update Scan Params function
25351
25352 @param pWDICtx: pointer to the WLAN DAL context
25353 pEventData: pointer to the event information structure
25354
25355 @see
25356 @return Result of the function call
25357*/
25358WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025359WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025360(
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 WDI_ControlBlockType* pWDICtx,
25362 WDI_EventInfoType* pEventData
25363)
25364{
25365 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25366 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025368 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025369 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025370
25371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025373 -------------------------------------------------------------------------*/
25374 if (( NULL == pEventData ) ||
25375 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25376 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25377 {
25378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025382 }
25383
25384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25385 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025386
25387 //
25388 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25389 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025390 if ( pWDICtx->wlanVersion.revision < 1 )
25391 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025392 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025393 &pSendBuffer, &usSendSize);
25394 }
25395 else
25396 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025397 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25398 &pSendBuffer, &usSendSize);
25399 }
25400
25401 if(WDI_STATUS_SUCCESS != wdiStatus)
25402 {
25403 //memory allocation failed
25404 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025406
Jeff Johnson295189b2012-06-20 16:38:30 -070025407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025408 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025410 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025411 wdiUpdateScanParamsCb, pEventData->pUserData,
25412 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025413}
25414
25415/**
25416 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025417
25418 @param pWDICtx: pointer to the WLAN DAL context
25419 pEventData: pointer to the event information structure
25420
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 @see
25422 @return Result of the function call
25423*/
25424WDI_Status
25425WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025426(
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 WDI_ControlBlockType* pWDICtx,
25428 WDI_EventInfoType* pEventData
25429)
25430{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025431 WDI_LowLevelIndType wdiInd;
25432 tpPrefNetwFoundParams pNetwFoundParams;
25433 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025434
25435
25436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 -------------------------------------------------------------------------*/
25439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25440 ( NULL == pEventData->pEventData ))
25441 {
25442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025444 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 }
25447
25448 /*-------------------------------------------------------------------------
25449 Extract indication and send it to UMAC
25450 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025451 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25452
25453 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25454 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25455 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25456
25457 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25458 {
25459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25460 "%s: fail to allocate memory", __func__);
25461 return WDI_STATUS_MEM_FAILURE;
25462 }
25463
25464 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25465 (pNetwFoundParams->ssId.length < 32 )?
25466 pNetwFoundParams->ssId.length : 32;
25467 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25468 pNetwFoundParams->ssId.ssId,
25469 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25470 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25471 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25472 pNetwFoundParams->frameLength;
25473 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25474 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25475 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025476
25477 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 // DEBUG
25481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025482 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025483 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025484 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025486 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25488
ltimariu034f7d62013-01-24 18:54:33 -080025489 if ( pWDICtx->wdiLowLevelIndCB )
25490 {
25491 /*Notify UMAC*/
25492 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25493 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025494
25495 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025496}
25497
25498/**
25499 @brief Process PNO Rsp function (called when a
25500 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025501
25502 @param pWDICtx: pointer to the WLAN DAL context
25503 pEventData: pointer to the event information structure
25504
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 @see
25506 @return Result of the function call
25507*/
25508WDI_Status
25509WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025510(
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 WDI_ControlBlockType* pWDICtx,
25512 WDI_EventInfoType* pEventData
25513)
25514{
25515 WDI_Status wdiStatus;
25516 eHalStatus halStatus;
25517 WDI_PNOScanCb wdiPNOScanCb = NULL;
25518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25519
25520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025522 -------------------------------------------------------------------------*/
25523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25524 ( NULL == pEventData->pEventData ))
25525 {
25526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 }
25531
25532
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534
25535 /*-------------------------------------------------------------------------
25536 Extract response and send it to UMAC
25537 -------------------------------------------------------------------------*/
25538 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025540
25541 /*Notify UMAC*/
25542 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25543
Jeff Johnsone7245742012-09-05 17:12:55 -070025544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025545}/*WDI_ProcessSetPreferredNetworkRsp*/
25546
25547/**
25548 @brief Process RSSI Filter Rsp function (called when a
25549 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025550
25551 @param pWDICtx: pointer to the WLAN DAL context
25552 pEventData: pointer to the event information structure
25553
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 @see
25555 @return Result of the function call
25556*/
25557WDI_Status
25558WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025559(
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 WDI_ControlBlockType* pWDICtx,
25561 WDI_EventInfoType* pEventData
25562)
25563{
25564 WDI_Status wdiStatus;
25565 eHalStatus halStatus;
25566 WDI_RssiFilterCb wdiRssiFilterCb;
25567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25568
25569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 -------------------------------------------------------------------------*/
25572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25573 ( NULL == pEventData->pEventData ))
25574 {
25575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 }
25580
Jeff Johnsone7245742012-09-05 17:12:55 -070025581 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025582
25583 /*-------------------------------------------------------------------------
25584 Extract response and send it to UMAC
25585 -------------------------------------------------------------------------*/
25586 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025587 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025588
25589 /*Notify UMAC*/
25590 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25591
Jeff Johnsone7245742012-09-05 17:12:55 -070025592 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025593}/*WDI_ProcessSetRssiFilterRsp*/
25594
25595/**
25596 @brief Process Update Scan Params Rsp function (called when a
25597 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025598
25599 @param pWDICtx: pointer to the WLAN DAL context
25600 pEventData: pointer to the event information structure
25601
Jeff Johnson295189b2012-06-20 16:38:30 -070025602 @see
25603 @return Result of the function call
25604*/
25605WDI_Status
25606WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025607(
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 WDI_ControlBlockType* pWDICtx,
25609 WDI_EventInfoType* pEventData
25610)
25611{
25612 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025614 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025615 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25617
25618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025620 -------------------------------------------------------------------------*/
25621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25622 ( NULL == pEventData->pEventData ))
25623 {
25624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 }
25629
25630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025631 "%s: Process UPD scan params ptr : %p",
25632 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025633
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025635
25636 /*-------------------------------------------------------------------------
25637 Extract response and send it to UMAC
25638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25640 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 sizeof(halUpdScanParams.status));
25642
25643 uStatus = halUpdScanParams.status;
25644
25645 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025647
25648 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025650
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652
25653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 halUpdScanParams.status);
25656
25657 /*Notify UMAC*/
25658 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25659
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025661}
25662#endif // FEATURE_WLAN_SCAN_PNO
25663
25664#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025666WDI_8023MulticastListReq
25667(
25668 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25669 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25670 void* pUserData
25671)
25672{
25673 WDI_EventInfoType wdiEventData;
25674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25675
25676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025677 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025678
25679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025681 ------------------------------------------------------------------------*/
25682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25683 {
25684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25685 "WDI API call before module is initialized - Fail request");
25686
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 }
25689
25690 /*------------------------------------------------------------------------
25691 Fill in Event data and post to the Main FSM
25692 ------------------------------------------------------------------------*/
25693 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025694 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025695 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025696 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025697 wdiEventData.pUserData = pUserData;
25698
25699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25700}
25701
Jeff Johnsone7245742012-09-05 17:12:55 -070025702WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025703WDI_ReceiveFilterSetFilterReq
25704(
25705 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25706 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25707 void* pUserData
25708)
25709{
25710 WDI_EventInfoType wdiEventData;
25711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25712
25713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025714 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025715
25716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 ------------------------------------------------------------------------*/
25719 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25720 {
25721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25722 "WDI API call before module is initialized - Fail request");
25723
Jeff Johnsone7245742012-09-05 17:12:55 -070025724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025725 }
25726
25727 /*------------------------------------------------------------------------
25728 Fill in Event data and post to the Main FSM
25729 ------------------------------------------------------------------------*/
25730 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025731 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25732 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025733 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25734 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 wdiEventData.pUserData = pUserData;
25737
25738
25739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25740}
25741
Jeff Johnsone7245742012-09-05 17:12:55 -070025742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025743WDI_FilterMatchCountReq
25744(
25745 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25746 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25747 void* pUserData
25748)
25749{
25750 WDI_EventInfoType wdiEventData;
25751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25752
25753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025754 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025755
25756 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 ------------------------------------------------------------------------*/
25759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25760 {
25761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25762 "WDI API call before module is initialized - Fail request");
25763
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025765 }
25766
25767 /*------------------------------------------------------------------------
25768 Fill in Event data and post to the Main FSM
25769 ------------------------------------------------------------------------*/
25770 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025771 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025773 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 wdiEventData.pUserData = pUserData;
25775
25776
25777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25778}
25779
Jeff Johnsone7245742012-09-05 17:12:55 -070025780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025781WDI_ReceiveFilterClearFilterReq
25782(
25783 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25784 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25785 void* pUserData
25786)
25787{
25788 WDI_EventInfoType wdiEventData;
25789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25790
25791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025792 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025793
25794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 ------------------------------------------------------------------------*/
25797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25798 {
25799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25800 "WDI API call before module is initialized - Fail request");
25801
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 }
25804
25805 /*------------------------------------------------------------------------
25806 Fill in Event data and post to the Main FSM
25807 ------------------------------------------------------------------------*/
25808 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025811 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 wdiEventData.pUserData = pUserData;
25813
25814
25815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25816}
25817
25818/**
25819 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025820
25821 @param pWDICtx: pointer to the WLAN DAL context
25822 pEventData: pointer to the event information structure
25823
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 @see
25825 @return Result of the function call
25826*/
25827WDI_Status
25828WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025829(
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 WDI_ControlBlockType* pWDICtx,
25831 WDI_EventInfoType* pEventData
25832)
25833{
25834 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25835 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 wpt_uint16 usDataOffset = 0;
25838 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025839 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025841 wpt_uint8 ucCurrentBSSSesIdx = 0;
25842 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025843
25844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025845 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025846
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025847 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25848 if( NULL == pRcvFltMcAddrListType )
25849 {
25850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25851 "Failed to alloc in WDI_Process8023MulticastListReq");
25852 return WDI_STATUS_E_FAILURE;
25853 }
25854
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 -------------------------------------------------------------------------*/
25858 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025861 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025862 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25863 {
25864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025865 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025866 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025868 return WDI_STATUS_E_FAILURE;
25869 }
25870
25871 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25872 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25873 &pBSSSes);
25874 if ( NULL == pBSSSes )
25875 {
25876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025877 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025878 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 }
25881
25882 /*-----------------------------------------------------------------------
25883 Get message buffer
25884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25886 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 sizeof(tHalRcvFltMcAddrListType),
25888 &pSendBuffer, &usDataOffset, &usSendSize))||
25889 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25890 {
25891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25892 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025893 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025894 pEventData, pwdiFltPktSetMcListReqParamsType,
25895 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025896 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 }
25900
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025901 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025902 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025906 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25907 sizeof(tSirMacAddr));
25908 }
25909
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025910 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025912 pRcvFltMcAddrListType,
25913 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025914
25915 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025917
25918
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025919 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025921 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025923 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025924 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025926}
25927
25928/**
25929 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025930
25931 @param pWDICtx: pointer to the WLAN DAL context
25932 pEventData: pointer to the event information structure
25933
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 @see
25935 @return Result of the function call
25936*/
25937WDI_Status
25938WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025939(
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 WDI_ControlBlockType* pWDICtx,
25941 WDI_EventInfoType* pEventData
25942)
25943{
25944 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25945 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 wpt_uint16 usDataOffset = 0;
25948 wpt_uint16 usSendSize = 0;
25949 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025950 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025951 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 wpt_uint8 ucCurrentBSSSesIdx = 0;
25953 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025954 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25955 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025956
25957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025958 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025959
25960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 -------------------------------------------------------------------------*/
25963 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25968 {
25969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 return WDI_STATUS_E_FAILURE;
25973 }
25974
25975 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25976 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25977 &pBSSSes);
25978 if ( NULL == pBSSSes )
25979 {
25980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025981 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 }
25984
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025985 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25986 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025987
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025988 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25989 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25990 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25991
25992 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25993 usSessRcvPktFilterCfgSize);
25994
25995 if(NULL == pSessRcvPktFilterCfg)
25996 {
25997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25998 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025999 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026000 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026001 WDI_ASSERT(0);
26002 return WDI_STATUS_E_FAILURE;
26003 }
26004
26005 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26006
26007 /*-----------------------------------------------------------------------
26008 Get message buffer
26009 -----------------------------------------------------------------------*/
26010
26011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26012 usSessRcvPktFilterCfgSize,
26013 &pSendBuffer, &usDataOffset, &usSendSize))||
26014 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26015 {
26016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26017 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026018 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026019 pEventData, pwdiSetRcvPktFilterReqInfo,
26020 wdiReceiveFilterSetFilterCb);
26021 WDI_ASSERT(0);
26022 wpalMemoryFree(pSessRcvPktFilterCfg);
26023 return WDI_STATUS_E_FAILURE;
26024 }
26025
26026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026027 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026028 usSendSize,pSessRcvPktFilterCfg);
26029
26030 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26031 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26032 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26033 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26034
26035 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26036
26037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26038 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26039 pSessRcvPktFilterCfg->filterType);
26040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26041 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26042 pSessRcvPktFilterCfg->coleasceTime);
26043
26044 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26045 {
26046 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26047 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26048 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26049 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26050 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26051 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26052 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26053 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26054
26055 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26056 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26057 8);
26058 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26059 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26060 8);
26061
26062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026063 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026064 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26065 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26066
26067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026068 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026069 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26070 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26071
26072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026073 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026074 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26075 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26076 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26077 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26078 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26079 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26080
26081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026082 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026083 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26084 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26085 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26086 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26087 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26088 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26089 }
26090
26091 wpalMemoryCopy( pSendBuffer+usDataOffset,
26092 pSessRcvPktFilterCfg,
26093 usSessRcvPktFilterCfgSize);
26094
26095
26096 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26097 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26098
26099 wpalMemoryFree(pSessRcvPktFilterCfg);
26100
26101 }
26102 /*If SLM_SESSIONIZATION is not supported then do this */
26103 else
26104 {
26105 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26106 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26107 * sizeof(tHalRcvPktFilterParams));
26108
26109 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026110 usRcvPktFilterCfgSize);
26111
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026112 if(NULL == pRcvPktFilterCfg)
26113 {
26114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26115 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026116 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026117 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026118 WDI_ASSERT(0);
26119 return WDI_STATUS_E_FAILURE;
26120 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026121
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026122 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026123
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026124 /*-----------------------------------------------------------------------
26125 Get message buffer
26126 -----------------------------------------------------------------------*/
26127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 usRcvPktFilterCfgSize,
26129 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026130 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26131 {
26132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026134 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 pEventData, pwdiSetRcvPktFilterReqInfo,
26136 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026137 WDI_ASSERT(0);
26138 wpalMemoryFree(pRcvPktFilterCfg);
26139 return WDI_STATUS_E_FAILURE;
26140 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026141
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026143 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026144 usSendSize,usRcvPktFilterCfgSize);
26145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026146 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26147 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26148 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26149 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026150
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026152 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026153 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026156 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026157
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026158 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26159 {
26160 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26161 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26162 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26163 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26164 pRcvPktFilterCfg->paramsData[i].dataOffset =
26165 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26166 pRcvPktFilterCfg->paramsData[i].dataLength =
26167 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026168
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026169 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26171 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026172 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026173 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26174 8);
26175
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026177 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026178 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026179 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26180
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026182 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026183 pRcvPktFilterCfg->paramsData[i].dataOffset,
26184 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026185
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026187 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026188 pRcvPktFilterCfg->paramsData[i].compareData[0],
26189 pRcvPktFilterCfg->paramsData[i].compareData[1],
26190 pRcvPktFilterCfg->paramsData[i].compareData[2],
26191 pRcvPktFilterCfg->paramsData[i].compareData[3],
26192 pRcvPktFilterCfg->paramsData[i].compareData[4],
26193 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026194
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026196 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026197 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26198 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26199 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26200 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26201 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26202 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026204
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026206 pRcvPktFilterCfg,
26207 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026208
26209
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026210 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26211 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026212
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026214 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026215 wpalMemoryFree(pRcvPktFilterCfg);
26216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026218 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026222 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026223}
26224
26225/**
26226 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026227
26228 @param pWDICtx: pointer to the WLAN DAL context
26229 pEventData: pointer to the event information structure
26230
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 @see
26232 @return Result of the function call
26233*/
26234WDI_Status
26235WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026236(
Jeff Johnson295189b2012-06-20 16:38:30 -070026237 WDI_ControlBlockType* pWDICtx,
26238 WDI_EventInfoType* pEventData
26239)
26240{
26241 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26242 NULL;
26243 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26244 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 wpt_uint16 usDataOffset = 0;
26247 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026248 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26249 wpt_uint8 ucCurrentBSSSesIdx = 0;
26250 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026251
26252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026253 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026254
26255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026257 -------------------------------------------------------------------------*/
26258 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026259 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026260 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026261 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26263 {
26264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026268 }
26269
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026270 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26271 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26272 &pBSSSes);
26273 if ( NULL == pBSSSes )
26274 {
26275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026276 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026277 return WDI_STATUS_E_FAILURE;
26278 }
26279
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 /*-----------------------------------------------------------------------
26281 Get message buffer
26282 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26284 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026285 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026287 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 {
26289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26290 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026291 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26293 wdiFilterMatchCountCb);
26294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 }
26297
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026298 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26299 wpalMemoryCopy( pSendBuffer+usDataOffset,
26300 &rcvFltPktMatchCntReqParam,
26301 sizeof(rcvFltPktMatchCntReqParam));
26302
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 //
26304 // Don't need to fill send buffer other than header
26305 //
26306 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026308
26309
26310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26314 wdiFilterMatchCountCb,
26315 pEventData->pUserData,
26316 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026317}
26318
26319/**
26320 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026321
26322 @param pWDICtx: pointer to the WLAN DAL context
26323 pEventData: pointer to the event information structure
26324
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 @see
26326 @return Result of the function call
26327*/
26328WDI_Status
26329WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026330(
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 WDI_ControlBlockType* pWDICtx,
26332 WDI_EventInfoType* pEventData
26333)
Jeff Johnsone7245742012-09-05 17:12:55 -070026334{
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26336 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026337 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 wpt_uint16 usDataOffset = 0;
26339 wpt_uint16 usSendSize = 0;
26340 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026341 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026342 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026343
26344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026345 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026346
26347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 -------------------------------------------------------------------------*/
26350 if (( NULL == pEventData ) ||
26351 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26352 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026353 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026354 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26355 {
26356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026359 return WDI_STATUS_E_FAILURE;
26360 }
26361
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026362 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26364 &pBSSSes);
26365 if ( NULL == pBSSSes )
26366 {
26367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026368 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 }
26371
26372 /*-----------------------------------------------------------------------
26373 Get message buffer
26374 -----------------------------------------------------------------------*/
26375 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026376 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026377 sizeof(tHalRcvFltPktClearParam),
26378 &pSendBuffer, &usDataOffset, &usSendSize))||
26379 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26380 {
26381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26382 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026383 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026384 pEventData, pwdiRcvFltPktClearReqParamsType,
26385 wdiRcvFltPktClearFilterCb);
26386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 }
26389
26390
26391 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026392 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026393 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026394 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026395
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26397 wpalMemoryCopy( pSendBuffer+usDataOffset,
26398 &rcvFltPktClearParam,
26399 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026400
26401 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026402 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026403
26404
26405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026411}
26412
26413/**
26414 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026415
26416 @param pWDICtx: pointer to the WLAN DAL context
26417 pEventData: pointer to the event information structure
26418
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 @see
26420 @return Result of the function call
26421*/
26422WDI_Status
26423WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026424(
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 WDI_ControlBlockType* pWDICtx,
26426 WDI_EventInfoType* pEventData
26427)
26428{
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 eHalStatus halStatus;
26430 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026431 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26432 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26434
26435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026436 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026437
26438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 -------------------------------------------------------------------------*/
26441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26442 ( NULL == pEventData->pEventData ))
26443 {
26444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 }
26449
Jeff Johnsone7245742012-09-05 17:12:55 -070026450 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026451
26452 /*-------------------------------------------------------------------------
26453 Extract response and send it to UMAC
26454 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026455 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26456 {
26457 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26458 pEventData->pEventData,
26459 sizeof(halRcvFltPktSetMcListRsp));
26460
26461 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26462 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26463 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26464 halRcvFltPktSetMcListRsp.bssIdx;
26465 }
26466 else
26467 {
26468 halStatus = *((eHalStatus*)pEventData->pEventData);
26469 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026471
26472 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026473 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026474
Jeff Johnsone7245742012-09-05 17:12:55 -070026475 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026476}
26477
26478/**
26479 @brief Process Set Rsp function (called when a
26480 response is being received over the bus from HAL)
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_ProcessReceiveFilterSetFilterRsp
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;
26496 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026497 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26498 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26500
26501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026502 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026503
26504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 -------------------------------------------------------------------------*/
26507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26508 ( NULL == pEventData->pEventData ))
26509 {
26510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 }
26515
26516 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026517 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( &halSetPktFilterRspParams,
26525 pEventData->pEventData,
26526 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026527
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026528 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26529 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26530 }
26531 else
26532 {
26533 halStatus = *((eHalStatus*)pEventData->pEventData);
26534 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26535 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026536 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026537 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026538
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026540}
26541
26542/**
26543 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026544
26545 @param pWDICtx: pointer to the WLAN DAL context
26546 pEventData: pointer to the event information structure
26547
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 @see
26549 @return Result of the function call
26550*/
26551WDI_Status
26552WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026553(
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 WDI_ControlBlockType* pWDICtx,
26555 WDI_EventInfoType* pEventData
26556)
26557{
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026560 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26561 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026562
26563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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
Jeff Johnsone7245742012-09-05 17:12:55 -070026580 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026581
26582 /*-------------------------------------------------------------------------
26583 Extract response and send it to UMAC
26584 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026585 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26586 {
26587 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26588 pEventData->pEventData,
26589 sizeof(halRcvFltrPktMatachRsp));
26590
26591 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26592 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26593 }
26594 else
26595 {
26596 halStatus = *((eHalStatus*)pEventData->pEventData);
26597 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26598 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026599
26600 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026601 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026602
Jeff Johnsone7245742012-09-05 17:12:55 -070026603 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026604}
26605
26606/**
26607 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026608
26609 @param pWDICtx: pointer to the WLAN DAL context
26610 pEventData: pointer to the event information structure
26611
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 @see
26613 @return Result of the function call
26614*/
26615WDI_Status
26616WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026617(
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 WDI_ControlBlockType* pWDICtx,
26619 WDI_EventInfoType* pEventData
26620)
26621{
Jeff Johnson295189b2012-06-20 16:38:30 -070026622 eHalStatus halStatus;
26623 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026624 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26625 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26627
26628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026629 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026630
26631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 -------------------------------------------------------------------------*/
26634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26635 ( NULL == pEventData->pEventData ))
26636 {
26637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026641 }
26642
26643 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026644 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026645
26646 /*-------------------------------------------------------------------------
26647 Extract response and send it to UMAC
26648 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026649 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26650 {
26651 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26652 pEventData->pEventData,
26653 sizeof(halRcvFltPktClearRspMsg));
26654
26655 wdiRcvFltPktClearRspParamsType.wdiStatus =
26656 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26657 wdiRcvFltPktClearRspParamsType.bssIdx =
26658 halRcvFltPktClearRspMsg.bssIdx;
26659 }
26660 else
26661 {
26662 halStatus = *((eHalStatus*)pEventData->pEventData);
26663 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26664 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026665
26666 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026667 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026668
Jeff Johnsone7245742012-09-05 17:12:55 -070026669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026670}
26671#endif // WLAN_FEATURE_PACKET_FILTERING
26672
26673/**
26674 @brief Process Shutdown Rsp function
26675 There is no shutdown response comming from HAL
26676 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026677
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026679 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026680
26681 @see
26682 @return Result of the function call
26683*/
26684WDI_Status
26685WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026686(
Jeff Johnson295189b2012-06-20 16:38:30 -070026687 WDI_ControlBlockType* pWDICtx,
26688 WDI_EventInfoType* pEventData
26689)
26690{
26691 /*There is no shutdown response comming from HAL - function just kept for
26692 simmetry */
26693 WDI_ASSERT(0);
26694 return WDI_STATUS_SUCCESS;
26695}/*WDI_ProcessShutdownRsp*/
26696
26697/**
26698 @brief WDI_SetPowerParamsReq
26699
Jeff Johnsone7245742012-09-05 17:12:55 -070026700 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026702
Jeff Johnson295189b2012-06-20 16:38:30 -070026703 wdiPowerParamsCb: callback for passing back the response
26704 of the Set Power Params operation received from the
26705 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026706
Jeff Johnson295189b2012-06-20 16:38:30 -070026707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026708 callback
26709
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 @return Result of the function call
26711*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026713WDI_SetPowerParamsReq
26714(
26715 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26716 WDI_SetPowerParamsCb wdiPowerParamsCb,
26717 void* pUserData
26718)
26719{
26720 WDI_EventInfoType wdiEventData;
26721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26722
26723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026725 ------------------------------------------------------------------------*/
26726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26727 {
26728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26729 "WDI API call before module is initialized - Fail request");
26730
Jeff Johnsone7245742012-09-05 17:12:55 -070026731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026732 }
26733
26734 /*------------------------------------------------------------------------
26735 Fill in Event data and post to the Main FSM
26736 ------------------------------------------------------------------------*/
26737 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026738 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026739 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026740 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 wdiEventData.pUserData = pUserData;
26742
26743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26744}/*WDI_SetPowerParamsReq*/
26745
26746/**
26747 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026748
26749 @param pWDICtx: pointer to the WLAN DAL context
26750 pEventData: pointer to the event information structure
26751
Jeff Johnson295189b2012-06-20 16:38:30 -070026752 @see
26753 @return Result of the function call
26754*/
26755WDI_Status
26756WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026757(
Jeff Johnson295189b2012-06-20 16:38:30 -070026758 WDI_ControlBlockType* pWDICtx,
26759 WDI_EventInfoType* pEventData
26760)
26761{
26762 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26763 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026765 wpt_uint16 usDataOffset = 0;
26766 wpt_uint16 usSendSize = 0;
26767 tSetPowerParamsType powerParams;
26768
26769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026771 -------------------------------------------------------------------------*/
26772 if (( NULL == pEventData ) ||
26773 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26774 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26775 {
26776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026780 }
26781
26782 /*-----------------------------------------------------------------------
26783 Get message buffer
26784 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026786 sizeof(powerParams),
26787 &pSendBuffer, &usDataOffset, &usSendSize))||
26788 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26789 {
26790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026791 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026792 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026795 }
26796
26797 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026798 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026799 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26800
26801 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026802 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026803 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26804
26805 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26808
26809 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026810 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26812
26813 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026814 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026815 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26816
26817 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026818 powerParams.uBETInterval =
26819 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026820
Yue Ma0da19492013-05-13 17:01:29 -070026821 /* MAX LI for modulated DTIM */
26822 powerParams.uMaxLIModulatedDTIM =
26823 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026824
26825 wpalMemoryCopy( pSendBuffer+usDataOffset,
26826 &powerParams,
26827 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026828
26829 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831
26832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26836 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026837}
26838
26839/**
26840 @brief Process Power Params Rsp function (called when a
26841 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026842
26843 @param pWDICtx: pointer to the WLAN DAL context
26844 pEventData: pointer to the event information structure
26845
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 @see
26847 @return Result of the function call
26848*/
26849WDI_Status
26850WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026851(
Jeff Johnson295189b2012-06-20 16:38:30 -070026852 WDI_ControlBlockType* pWDICtx,
26853 WDI_EventInfoType* pEventData
26854)
26855{
26856 WDI_Status wdiStatus;
26857 eHalStatus halStatus;
26858 WDI_SetPowerParamsCb wdiPowerParamsCb;
26859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26860
26861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026863 -------------------------------------------------------------------------*/
26864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26865 ( NULL == pEventData->pEventData ))
26866 {
26867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 }
26872
Jeff Johnsone7245742012-09-05 17:12:55 -070026873 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026874
26875 /*-------------------------------------------------------------------------
26876 Extract response and send it to UMAC
26877 -------------------------------------------------------------------------*/
26878 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026879 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026880
26881 /*Notify UMAC*/
26882 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26883
Jeff Johnsone7245742012-09-05 17:12:55 -070026884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026885}/*WDI_ProcessSetPowerParamsRsp*/
26886
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026887/**
26888 @brief WDI_dhcpStartInd
26889 Host will send an event to the FW when DHCP is initiated
26890
26891 @param
26892 WDI_DHCPInd: DHCP Indication
26893 @see
26894 @return Result of the function call
26895*/
26896WDI_Status
26897WDI_dhcpStartInd
26898(
26899 WDI_DHCPInd *wdiDHCPInd
26900)
26901{
26902 WDI_EventInfoType wdiEventData;
26903
26904 /*------------------------------------------------------------------------
26905 Sanity Check
26906 ------------------------------------------------------------------------*/
26907 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26908 {
26909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26910 "WDI API call before module is initialized - Fail request");
26911
26912 return WDI_STATUS_E_NOT_ALLOWED;
26913 }
26914
26915 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26916 wdiEventData.pEventData = wdiDHCPInd;
26917 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26918 wdiEventData.pCBfnc = NULL;
26919 wdiEventData.pUserData = NULL;
26920
26921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26922}
26923
26924
26925/**
26926 @brief WDI_dhcpStopInd
26927 Host will send an event to the FW when DHCP is completed
26928
26929 @param
26930 WDI_DHCPInd: DHCP Indication
26931 @see
26932 @return Result of the function call
26933*/
26934WDI_Status
26935WDI_dhcpStopInd
26936(
26937 WDI_DHCPInd *wdiDHCPInd
26938)
26939{
26940 WDI_EventInfoType wdiEventData;
26941
26942 /*------------------------------------------------------------------------
26943 Sanity Check
26944 ------------------------------------------------------------------------*/
26945 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26946 {
26947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26948 "WDI API call before module is initialized - Fail request");
26949
26950 return WDI_STATUS_E_NOT_ALLOWED;
26951 }
26952
26953 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26954 wdiEventData.pEventData = wdiDHCPInd;
26955 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26956 wdiEventData.pCBfnc = NULL;
26957 wdiEventData.pUserData = NULL;
26958
26959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26960}
26961
26962
26963/**
26964 @brief Process DHCP Start Indication message and post it to HAL
26965
26966 @param pWDICtx: pointer to the WLAN DAL context
26967 pEventData: pointer to the event information structure
26968
26969 @see
26970 @return Result of the function call
26971*/
26972WDI_Status
26973WDI_ProcessDHCPStartInd
26974(
26975 WDI_ControlBlockType* pWDICtx,
26976 WDI_EventInfoType* pEventData
26977)
26978{
26979 wpt_uint8* pSendBuffer = NULL;
26980 wpt_uint16 usDataOffset = 0;
26981 wpt_uint16 usSendSize = 0;
26982 wpt_uint16 usLen = 0;
26983 WDI_DHCPInd* pwdiDHCPInd = NULL;
26984 tDHCPInfo* pDHCPInfo;
26985
26986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26987
26988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26989 "%s", __func__);
26990
26991 /*-------------------------------------------------------------------------
26992 Sanity check
26993 -------------------------------------------------------------------------*/
26994 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26995 {
26996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26997 "%s: Invalid parameters", __func__);
26998 WDI_ASSERT(0);
26999 return WDI_STATUS_E_FAILURE;
27000 }
27001 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27002 /*-----------------------------------------------------------------------
27003 Get message buffer
27004 -----------------------------------------------------------------------*/
27005
27006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27007 WDI_DHCP_START_IND,
27008 sizeof(tDHCPInfo),
27009 &pSendBuffer, &usDataOffset, &usSendSize))||
27010 ( usSendSize < (usDataOffset + usLen )))
27011 {
27012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27013 "Unable to get send buffer in DHCP Start req %p ",
27014 pEventData);
27015 WDI_ASSERT(0);
27016 return WDI_STATUS_E_FAILURE;
27017 }
27018
27019 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27020 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27021 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27022 WDI_MAC_ADDR_LEN);
27023
27024 pWDICtx->pReqStatusUserData = NULL;
27025 pWDICtx->pfncRspCB = NULL;
27026
27027 /*-------------------------------------------------------------------------
27028 Send DHCP Start Indication to HAL
27029 -------------------------------------------------------------------------*/
27030 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27031
27032}/*WDI_ProcessDHCPStartInd*/
27033
27034/**
27035 @brief Process DHCP Stop indication message and post it to HAL
27036
27037 @param pWDICtx: pointer to the WLAN DAL context
27038 pEventData: pointer to the event information structure
27039
27040 @see
27041 @return Result of the function call
27042*/
27043WDI_Status
27044WDI_ProcessDHCPStopInd
27045(
27046 WDI_ControlBlockType* pWDICtx,
27047 WDI_EventInfoType* pEventData
27048)
27049{
27050 wpt_uint8* pSendBuffer = NULL;
27051 wpt_uint16 usDataOffset = 0;
27052 wpt_uint16 usSendSize = 0;
27053 wpt_uint16 usLen = 0;
27054 WDI_DHCPInd* pwdiDHCPInd = NULL;
27055 tDHCPInfo* pDHCPInfo;
27056
27057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27058
27059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27060 "%s", __func__);
27061
27062 /*-------------------------------------------------------------------------
27063 Sanity check
27064 -------------------------------------------------------------------------*/
27065
27066 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27067 {
27068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27069 "%s: Invalid parameters", __func__);
27070 WDI_ASSERT(0);
27071 return WDI_STATUS_E_FAILURE;
27072 }
27073 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27074 /*-----------------------------------------------------------------------
27075 Get message buffer
27076 -----------------------------------------------------------------------*/
27077
27078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27079 WDI_DHCP_STOP_IND,
27080 sizeof(tDHCPInfo),
27081 &pSendBuffer, &usDataOffset, &usSendSize))||
27082 ( usSendSize < (usDataOffset + usLen )))
27083 {
27084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27085 "Unable to get send buffer in DHCP Start req %p ",
27086 pEventData);
27087 WDI_ASSERT(0);
27088 return WDI_STATUS_E_FAILURE;
27089 }
27090
27091 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27092 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27093 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27094 WDI_MAC_ADDR_LEN);
27095
27096 pWDICtx->pReqStatusUserData = NULL;
27097 pWDICtx->pfncRspCB = NULL;
27098 /*-------------------------------------------------------------------------
27099 Send DHCP Stop indication to HAL
27100 -------------------------------------------------------------------------*/
27101 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27102
27103}/*WDI_ProcessDHCPStopInd*/
27104
27105
Jeff Johnson295189b2012-06-20 16:38:30 -070027106#ifdef WLAN_FEATURE_GTK_OFFLOAD
27107/**
27108 @brief WDI_GTKOffloadReq will be called when the upper MAC
27109 wants to set GTK Rekey Counter while in power save. Upon
27110 the call of this API the WLAN DAL will pack and send a
27111 HAL GTK offload request message to the lower RIVA
27112 sub-system if DAL is in state STARTED.
27113
27114 In state BUSY this request will be queued. Request won't
27115 be allowed in any other state.
27116
27117 WDI_PostAssocReq must have been called.
27118
27119 @param pwdiGtkOffloadParams: the GTK offload as specified
27120 by the Device Interface
27121
27122 wdiGtkOffloadCb: callback for passing back the response
27123 of the GTK offload operation received from the device
27124
27125 pUserData: user data will be passed back with the
27126 callback
27127
27128 @see WDI_PostAssocReq
27129 @return Result of the function call
27130*/
27131WDI_Status
27132WDI_GTKOffloadReq
27133(
27134 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27135 WDI_GtkOffloadCb wdiGtkOffloadCb,
27136 void* pUserData
27137)
27138{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027139 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27141
27142 /*------------------------------------------------------------------------
27143 Sanity Check
27144 ------------------------------------------------------------------------*/
27145 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27146 {
27147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27148 "WDI API call before module is initialized - Fail request");
27149
27150 return WDI_STATUS_E_NOT_ALLOWED;
27151 }
27152
27153 /*------------------------------------------------------------------------
27154 Fill in Event data and post to the Main FSM
27155 ------------------------------------------------------------------------*/
27156 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27157 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027158 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027159 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27160 wdiEventData.pUserData = pUserData;
27161
27162 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27163}
27164
27165
27166/**
27167 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27168 MAC wants to get GTK Rekey Counter while in power save.
27169 Upon the call of this API the WLAN DAL will pack and
27170 send a HAL GTK offload request message to the lower RIVA
27171 sub-system if DAL is in state STARTED.
27172
27173 In state BUSY this request will be queued. Request won't
27174 be allowed in any other state.
27175
27176 WDI_PostAssocReq must have been called.
27177
27178 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27179 Information Message as specified by the
27180 Device Interface
27181
27182 wdiGtkOffloadGetInfoCb: callback for passing back the
27183 response of the GTK offload operation received from the
27184 device
27185
27186 pUserData: user data will be passed back with the
27187 callback
27188
27189 @see WDI_PostAssocReq
27190 @return Result of the function call
27191*/
27192WDI_Status
27193WDI_GTKOffloadGetInfoReq
27194(
27195 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27196 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27197 void* pUserData
27198)
27199{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027200 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27202
27203 /*------------------------------------------------------------------------
27204 Sanity Check
27205 ------------------------------------------------------------------------*/
27206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27207 {
27208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27209 "WDI API call before module is initialized - Fail request");
27210
27211 return WDI_STATUS_E_NOT_ALLOWED;
27212 }
27213
27214 /*------------------------------------------------------------------------
27215 Fill in Event data and post to the Main FSM
27216 ------------------------------------------------------------------------*/
27217 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27218 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27219 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27220 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27221 wdiEventData.pUserData = pUserData;
27222
27223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27224}
27225
27226
27227/**
27228 @brief Process set GTK Offload Request function
27229
27230 @param pWDICtx: pointer to the WLAN DAL context
27231 pEventData: pointer to the event information structure
27232
27233 @see
27234 @return Result of the function call
27235*/
27236WDI_Status
27237WDI_ProcessGTKOffloadReq
27238(
27239 WDI_ControlBlockType* pWDICtx,
27240 WDI_EventInfoType* pEventData
27241)
27242{
27243 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27244 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27245 wpt_uint8* pSendBuffer = NULL;
27246 wpt_uint16 usDataOffset = 0;
27247 wpt_uint16 usSendSize = 0;
27248 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027249 wpt_uint8 ucCurrentSessionId = 0;
27250 WDI_BSSSessionType* pBSSSes = NULL;
27251
Jeff Johnson295189b2012-06-20 16:38:30 -070027252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27253
27254 /*-------------------------------------------------------------------------
27255 Sanity check
27256 -------------------------------------------------------------------------*/
27257 if (( NULL == pEventData ) ||
27258 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27259 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27260 {
27261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027265 }
27266
27267 /*-----------------------------------------------------------------------
27268 Get message buffer
27269 -----------------------------------------------------------------------*/
27270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27271 sizeof(gtkOffloadReqParams),
27272 &pSendBuffer, &usDataOffset, &usSendSize))||
27273 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27274 {
27275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027276 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27278 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027279 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 }
27281
27282 //
27283 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27284 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027285 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27286 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27287 &pBSSSes);
27288 if ( NULL == pBSSSes )
27289 {
27290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027291 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027292 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027293 }
27294
27295 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27296
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27298 // Copy KCK
27299 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27300 // Copy KEK
27301 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27302 // Copy KeyReplayCounter
27303 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27304
27305 wpalMemoryCopy( pSendBuffer+usDataOffset,
27306 &gtkOffloadReqParams,
27307 sizeof(gtkOffloadReqParams));
27308
27309 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27310 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27311
27312 /*-------------------------------------------------------------------------
27313 Send Get STA Request to HAL
27314 -------------------------------------------------------------------------*/
27315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27316 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027317
27318fail:
27319 // Release the message buffer so we don't leak
27320 wpalMemoryFree(pSendBuffer);
27321
27322failRequest:
27323 //WDA should have failure check to avoid the memory leak
27324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027325}
27326
27327
27328/**
27329 @brief Process GTK Offload Get Information Request function
27330
27331 @param pWDICtx: pointer to the WLAN DAL context
27332 pEventData: pointer to the event information structure
27333
27334 @see
27335 @return Result of the function call
27336*/
27337WDI_Status
27338WDI_ProcessGTKOffloadGetInfoReq
27339(
27340 WDI_ControlBlockType* pWDICtx,
27341 WDI_EventInfoType* pEventData
27342)
27343{
27344 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27345 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27346 wpt_uint8* pSendBuffer = NULL;
27347 wpt_uint16 usDataOffset = 0;
27348 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027349 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27350 wpt_uint8 ucCurrentSessionId = 0;
27351 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027352
27353 /*-------------------------------------------------------------------------
27354 Sanity check
27355 -------------------------------------------------------------------------*/
27356 if (( NULL == pEventData ) ||
27357 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27358 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27359 {
27360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027363 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 }
27365
27366 /*-----------------------------------------------------------------------
27367 Get message buffer
27368 -----------------------------------------------------------------------*/
27369 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027370 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027371 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027372 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 {
27374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027375 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27377 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027378 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027379 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027380 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27381 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27382 &pBSSSes);
27383 if ( NULL == pBSSSes )
27384 {
27385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027386 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027387 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027388 }
27389 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027390
27391 //
27392 // Don't need to fill send buffer other than header
27393 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027394 wpalMemoryCopy( pSendBuffer+usDataOffset,
27395 &halGtkOffloadGetInfoReqParams,
27396 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027397
27398 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27399 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27400
27401 /*-------------------------------------------------------------------------
27402 Send Get STA Request to HAL
27403 -------------------------------------------------------------------------*/
27404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27405 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027406fail:
27407 // Release the message buffer so we don't leak
27408 wpalMemoryFree(pSendBuffer);
27409
27410failRequest:
27411 //WDA should have failure check to avoid the memory leak
27412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027413}
27414
27415/**
27416 @brief Process host offload Rsp function (called when a
27417 response is being received over the bus from HAL)
27418
27419 @param pWDICtx: pointer to the WLAN DAL context
27420 pEventData: pointer to the event information structure
27421
27422 @see
27423 @return Result of the function call
27424*/
27425WDI_Status
27426WDI_ProcessGtkOffloadRsp
27427(
27428 WDI_ControlBlockType* pWDICtx,
27429 WDI_EventInfoType* pEventData
27430)
27431{
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 eHalStatus halStatus;
27433 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027434 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27435 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
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 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27450
Jeff Johnson295189b2012-06-20 16:38:30 -070027451 /*-------------------------------------------------------------------------
27452 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( &halGtkOffloadRspParams,
27457 pEventData->pEventData,
27458 sizeof(halGtkOffloadRspParams));
27459
27460 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027461 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027462 wdiGtkOffloadRsparams.bssIdx =
27463 halGtkOffloadRspParams.bssIdx;
27464 }
27465 else
27466 {
27467 halStatus = *((eHalStatus*)pEventData->pEventData);
27468 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27469 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027470
27471 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027472 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473
27474 return WDI_STATUS_SUCCESS;
27475}
27476
27477/**
27478 @brief Process GTK Offload Get Information Response function
27479
27480 @param pWDICtx: pointer to the WLAN DAL context
27481 pEventData: pointer to the event information structure
27482
27483 @see
27484 @return Result of the function call
27485*/
27486WDI_Status
27487WDI_ProcessGTKOffloadGetInfoRsp
27488(
27489 WDI_ControlBlockType* pWDICtx,
27490 WDI_EventInfoType* pEventData
27491)
27492{
Jeff Johnson295189b2012-06-20 16:38:30 -070027493 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027494 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027495 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27496 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027497 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027498
Jeff Johnson295189b2012-06-20 16:38:30 -070027499
27500 /*-------------------------------------------------------------------------
27501 Sanity check
27502 -------------------------------------------------------------------------*/
27503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27504 ( NULL == pEventData->pEventData ))
27505 {
27506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027508 WDI_ASSERT(0);
27509 return WDI_STATUS_E_FAILURE;
27510 }
27511
Wilson Yangcf2cf012013-10-10 23:13:38 -070027512 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27513
27514 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027515 Extract response and send it to UMAC
27516 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027517 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27518 {
27519 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27520 pEventData->pEventData,
27521 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027522
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027523 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027524 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027525 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27526 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27527 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27528 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27529 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27530 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27531 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27532 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027533
27534 wpalMutexAcquire(&pWDICtx->wptMutex);
27535 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27536 &pBSSSes);
27537
27538 if ( NULL == pBSSSes )
27539 {
27540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27541 "Association sequence for this BSS does not exist or "
27542 "association no longer in progress - mysterious HAL response");
27543 wpalMutexRelease(&pWDICtx->wptMutex);
27544 return WDI_STATUS_E_NOT_ALLOWED;
27545 }
27546
27547 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27548 sizeof (wpt_macAddr));
27549 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027550 }
27551 else
27552 {
27553 halStatus = *((eHalStatus*)pEventData->pEventData);
27554 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27555 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027556 /*Notify UMAC*/
27557 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27558 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027559 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027560
27561 return WDI_STATUS_SUCCESS;
27562}
27563#endif // WLAN_FEATURE_GTK_OFFLOAD
27564
27565#ifdef WLAN_WAKEUP_EVENTS
27566WDI_Status
27567WDI_ProcessWakeReasonInd
27568(
27569 WDI_ControlBlockType* pWDICtx,
27570 WDI_EventInfoType* pEventData
27571)
27572{
27573 WDI_LowLevelIndType *pWdiInd;
27574 tpWakeReasonParams pWakeReasonParams;
27575 wpt_uint32 allocSize = 0;
27576
27577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027578 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027579
27580 /*-------------------------------------------------------------------------
27581 Sanity check
27582 -------------------------------------------------------------------------*/
27583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27584 ( NULL == pEventData->pEventData ))
27585 {
27586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027588 WDI_ASSERT( 0 );
27589 return WDI_STATUS_E_FAILURE;
27590 }
27591
27592 /*-------------------------------------------------------------------------
27593 Extract indication and send it to UMAC
27594 -------------------------------------------------------------------------*/
27595 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27596
27597 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27598
27599 //Allocate memory for WDI_WakeReasonIndType structure
27600 pWdiInd = wpalMemoryAllocate(allocSize) ;
27601
27602 if(NULL == pWdiInd)
27603 {
27604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027605 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027606 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027607 WDI_ASSERT(0);
27608 return WDI_STATUS_E_FAILURE;
27609 }
27610
27611 wpalMemoryZero(pWdiInd, allocSize);
27612
27613 /* Fill in the indication parameters*/
27614 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27615 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27616 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27617 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27618 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27619 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27620 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27621 &(pWakeReasonParams->aDataStart[0]),
27622 pWakeReasonParams->ulStoredDataLen);
27623
ltimariu034f7d62013-01-24 18:54:33 -080027624
27625 if ( pWDICtx->wdiLowLevelIndCB )
27626 {
27627 /*Notify UMAC*/
27628 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27629 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027630
27631 //Free memory allocated for WDI_WakeReasonIndType structure
27632 wpalMemoryFree(pWdiInd);
27633
27634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027635 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027636
27637 return WDI_STATUS_SUCCESS;
27638}
27639#endif // WLAN_WAKEUP_EVENTS
27640
27641void WDI_GetWcnssCompiledApiVersion
27642(
27643 WDI_WlanVersionType *pWcnssApiVersion
27644)
27645{
27646 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27647 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27648 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27649 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27650}
27651
27652/**
27653 @brief Process Set TM Level Rsp function (called when a
27654 response is being received over the bus from HAL)
27655
27656 @param pWDICtx: pointer to the WLAN DAL context
27657 pEventData: pointer to the event information structure
27658
27659 @see
27660 @return Result of the function call
27661*/
27662WDI_Status
27663WDI_ProcessSetTmLevelRsp
27664(
27665 WDI_ControlBlockType* pWDICtx,
27666 WDI_EventInfoType* pEventData
27667)
27668{
27669 WDI_Status wdiStatus;
27670 eHalStatus halStatus;
27671 WDI_SetTmLevelCb wdiSetTmLevelCb;
27672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27673
27674 /*-------------------------------------------------------------------------
27675 Sanity check
27676 -------------------------------------------------------------------------*/
27677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27678 ( NULL == pEventData->pEventData ))
27679 {
27680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027682 WDI_ASSERT(0);
27683 return WDI_STATUS_E_FAILURE;
27684 }
27685
27686 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27687
27688 /*-------------------------------------------------------------------------
27689 Extract response and send it to UMAC
27690 -------------------------------------------------------------------------*/
27691 halStatus = *((eHalStatus*)pEventData->pEventData);
27692 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27693
27694 /*Notify UMAC*/
27695 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27696
27697 return WDI_STATUS_SUCCESS;
27698}/*WDI_ProcessSetTmLevelRsp*/
27699
27700/**
27701 @brief Process Set Thermal Mitigation level Changed request
27702
27703 @param pWDICtx: pointer to the WLAN DAL context
27704 pEventData: pointer to the event information structure
27705
27706 @see
27707 @return Result of the function call
27708*/
27709WDI_Status
27710WDI_ProcessSetTmLevelReq
27711(
27712 WDI_ControlBlockType* pWDICtx,
27713 WDI_EventInfoType* pEventData
27714)
27715{
27716 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27717 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27718 wpt_uint8* pSendBuffer = NULL;
27719 wpt_uint16 usDataOffset = 0;
27720 wpt_uint16 usSendSize = 0;
27721 tSetThermalMitgationType halTmMsg;
27722
27723 /*-------------------------------------------------------------------------
27724 Sanity check
27725 -------------------------------------------------------------------------*/
27726 if (( NULL == pEventData ) ||
27727 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27728 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27729 {
27730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027732 WDI_ASSERT(0);
27733 return WDI_STATUS_E_FAILURE;
27734 }
27735
27736 /*-----------------------------------------------------------------------
27737 Get message buffer
27738 -----------------------------------------------------------------------*/
27739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27740 sizeof(halTmMsg),
27741 &pSendBuffer, &usDataOffset, &usSendSize))||
27742 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27743 {
27744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027745 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27747 WDI_ASSERT(0);
27748 return WDI_STATUS_E_FAILURE;
27749 }
27750
27751 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27752 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27753
27754 wpalMemoryCopy( pSendBuffer+usDataOffset,
27755 &halTmMsg,
27756 sizeof(halTmMsg));
27757
27758 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27759 pWDICtx->pfncRspCB = NULL;
27760 /*-------------------------------------------------------------------------
27761 Send Get STA Request to HAL
27762 -------------------------------------------------------------------------*/
27763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27764 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27765}
27766
27767/* Fill the value from the global features enabled array to the global capabilities
27768 * bitmap struct
27769 */
27770static void
27771FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27772{
27773 wpt_int8 i;
27774 for (i=0; i<len; i++)
27775 {
27776 setFeatCaps(fCaps, enabledFeat[i]);
27777 }
27778}
27779
27780/**
27781 @brief WDI_featureCapsExchangeReq
27782 Post feature capability bitmap exchange event.
27783 Host will send its own capability to FW in this req and
27784 expect FW to send its capability back as a bitmap in Response
27785
27786 @param
27787
27788 wdiFeatureCapsExchangeCb: callback called on getting the response.
27789 It is kept to mantain similarity between WDI reqs and if needed, can
27790 be used in future. Currently, It is set to NULL
27791
27792 pUserData: user data will be passed back with the
27793 callback
27794
27795 @see
27796 @return Result of the function call
27797*/
27798WDI_Status
27799WDI_featureCapsExchangeReq
27800(
27801 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27802 void* pUserData
27803)
27804{
27805 WDI_EventInfoType wdiEventData;
27806 wpt_int32 fCapsStructSize;
27807
27808 /*------------------------------------------------------------------------
27809 Sanity Check
27810 ------------------------------------------------------------------------*/
27811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27812 {
27813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27814 "WDI API call before module is initialized - Fail request");
27815
27816 return WDI_STATUS_E_NOT_ALLOWED;
27817 }
27818
27819 /* Allocate memory separately for global variable carrying FW caps */
27820 fCapsStructSize = sizeof(tWlanFeatCaps);
27821 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27822 if ( NULL == gpHostWlanFeatCaps )
27823 {
27824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027825 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 WDI_ASSERT(0);
27827 return WDI_STATUS_MEM_FAILURE;
27828 }
27829
27830 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27831
27832 /*------------------------------------------------------------------------
27833 Fill in Event data and post to the Main FSM
27834 ------------------------------------------------------------------------*/
27835 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27836 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027838 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027839 gpHostWlanFeatCaps->featCaps[0],
27840 gpHostWlanFeatCaps->featCaps[1],
27841 gpHostWlanFeatCaps->featCaps[2],
27842 gpHostWlanFeatCaps->featCaps[3]
27843 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27845 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027846 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27847 wdiEventData.pEventData = gpHostWlanFeatCaps;
27848 wdiEventData.uEventDataSize = fCapsStructSize;
27849 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27850 wdiEventData.pUserData = pUserData;
27851
27852 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27853}
27854
27855/**
Yathishd8713192012-12-10 14:21:35 -080027856 @brief Disable Active mode offload in Host
27857
27858 @param void
27859 @see
27860 @return void
27861*/
27862void
27863WDI_disableCapablityFeature(wpt_uint8 feature_index)
27864{
27865 supportEnabledFeatures[feature_index] = 0;
27866 return;
27867}
27868
27869/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027870 @brief Process Host-FW Capability Exchange Request function
27871
27872 @param pWDICtx: pointer to the WLAN DAL context
27873 pEventData: pointer to the event information structure
27874
27875 @see
27876 @return Result of the function call
27877*/
27878WDI_Status
27879WDI_ProcessFeatureCapsExchangeReq
27880(
27881 WDI_ControlBlockType* pWDICtx,
27882 WDI_EventInfoType* pEventData
27883)
27884{
27885 wpt_uint8* pSendBuffer = NULL;
27886 wpt_uint16 usDataOffset = 0;
27887 wpt_uint16 usSendSize = 0;
27888 wpt_uint16 usLen = 0;
27889
27890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27891
27892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027893 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027894
27895 /*-------------------------------------------------------------------------
27896 Sanity check
27897 -------------------------------------------------------------------------*/
27898 /* Call back function is NULL since not required for cap exchange req */
27899 if (( NULL == pEventData ) ||
27900 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27901 {
27902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027904 WDI_ASSERT(0);
27905 return WDI_STATUS_E_FAILURE;
27906 }
27907
27908 /*-----------------------------------------------------------------------
27909 Get message buffer
27910 -----------------------------------------------------------------------*/
27911 usLen = sizeof(tWlanFeatCaps);
27912
27913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27914 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27915 usLen,
27916 &pSendBuffer, &usDataOffset, &usSendSize))||
27917 ( usSendSize < (usDataOffset + usLen )))
27918 {
27919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027920 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27922 WDI_ASSERT(0);
27923 return WDI_STATUS_E_FAILURE;
27924 }
27925
27926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027927 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27929 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27930 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27931 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27932 );
27933
27934 /* Copy host caps after the offset in the send buffer */
27935 wpalMemoryCopy( pSendBuffer+usDataOffset,
27936 (tWlanFeatCaps *)pEventData->pEventData,
27937 usLen);
27938
27939 /*-------------------------------------------------------------------------
27940 Send Start Request to HAL
27941 -------------------------------------------------------------------------*/
27942 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27943 (WDI_StartRspCb)pEventData->pCBfnc,
27944 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27945
27946}/*WDI_ProcessFeatureCapsExchangeReq*/
27947
27948/**
27949 @brief Process Host-FW Capability Exchange Response function
27950
27951 @param pWDICtx: pointer to the WLAN DAL context
27952 pEventData: pointer to the event information structure
27953
27954 @see
27955 @return Result of the function call
27956*/
27957WDI_Status
27958WDI_ProcessFeatureCapsExchangeRsp
27959(
27960 WDI_ControlBlockType* pWDICtx,
27961 WDI_EventInfoType* pEventData
27962)
27963{
27964 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27965 wpt_int32 fCapsStructSize;
27966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27967
27968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027969 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027970
27971 /*-------------------------------------------------------------------------
27972 Sanity check
27973 -------------------------------------------------------------------------*/
27974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27975 ( NULL == pEventData->pEventData ))
27976 {
27977 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027980 WDI_ASSERT(0);
27981 return WDI_STATUS_E_FAILURE;
27982 }
27983
27984 /* Allocate memory separately for global variable carrying FW caps */
27985 fCapsStructSize = sizeof(tWlanFeatCaps);
27986 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27987 if ( NULL == gpFwWlanFeatCaps )
27988 {
27989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027990 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027991 WDI_ASSERT(0);
27992 return WDI_STATUS_MEM_FAILURE;
27993 }
27994
27995 /*-------------------------------------------------------------------------
27996 Unpack HAL Response Message - the header was already extracted by the
27997 main Response Handling procedure
27998 -------------------------------------------------------------------------*/
27999 /*-------------------------------------------------------------------------
28000 Extract response and send it to UMAC
28001 -------------------------------------------------------------------------*/
28002
28003 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28004 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053028005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028006 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028007 gpFwWlanFeatCaps->featCaps[0],
28008 gpFwWlanFeatCaps->featCaps[1],
28009 gpFwWlanFeatCaps->featCaps[2],
28010 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053028011 );
28012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28013 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028014 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28015
28016 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28017 if (wdiFeatureCapsExchangeCb != NULL)
28018 wdiFeatureCapsExchangeCb(NULL, NULL);
28019
28020 return WDI_STATUS_SUCCESS;
28021}
28022
Mohit Khanna4a70d262012-09-11 16:30:12 -070028023#ifdef WLAN_FEATURE_11AC
28024WDI_Status
28025WDI_ProcessUpdateVHTOpModeRsp
28026(
28027 WDI_ControlBlockType* pWDICtx,
28028 WDI_EventInfoType* pEventData
28029)
28030{
28031 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28032 WDI_Status wdiStatus;
28033 eHalStatus halStatus;
28034
28035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28036
28037 /*-------------------------------------------------------------------------
28038 Sanity check
28039 -------------------------------------------------------------------------*/
28040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28041 ( NULL == pEventData->pEventData))
28042 {
28043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028044 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028045 WDI_ASSERT(0);
28046 return WDI_STATUS_E_FAILURE;
28047 }
28048 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28049
28050 /*-------------------------------------------------------------------------
28051 Extract response and send it to UMAC
28052 -------------------------------------------------------------------------*/
28053 halStatus = *((eHalStatus*)pEventData->pEventData);
28054 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28055
28056 /*Notify UMAC*/
28057 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28058
28059 return WDI_STATUS_SUCCESS;
28060}
28061#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028062/**
28063 @brief WDI_getHostWlanFeatCaps
28064 WDI API that returns whether the feature passed to it as enum value in
28065 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28066 variable storing host capability bitmap to find this. This can be used by
28067 other moduels to decide certain things like call different APIs based on
28068 whether a particular feature is supported.
28069
28070 @param
28071
28072 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28073
28074 @see
28075 @return
28076 0 - if the feature is NOT supported in host
28077 any non-zero value - if the feature is SUPPORTED in host.
28078*/
28079wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28080{
28081 wpt_uint8 featSupported = 0;
28082 if (gpHostWlanFeatCaps != NULL)
28083 {
28084 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28085 }
28086 else
28087 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028089 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 }
28091 return featSupported;
28092}
28093
28094/**
28095 @brief WDI_getFwWlanFeatCaps
28096 WDI API that returns whether the feature passed to it as enum value in
28097 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28098 variable storing host capability bitmap to find this. This can be used by
28099 other moduels to decide certain things like call different APIs based on
28100 whether a particular feature is supported.
28101
28102 @param
28103
28104 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28105 in wlan_hal_msg.h.
28106
28107 @see
28108 @return
28109 0 - if the feature is NOT supported in FW
28110 any non-zero value - if the feature is SUPPORTED in FW.
28111*/
28112wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28113{
28114 wpt_uint8 featSupported = 0;
28115 if (gpFwWlanFeatCaps != NULL)
28116 {
28117 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28118 }
28119 else
28120 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028122 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028123 }
28124 return featSupported;
28125}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028126
28127#ifdef WLAN_FEATURE_11AC
28128WDI_Status
28129WDI_ProcessUpdateVHTOpModeReq
28130(
28131 WDI_ControlBlockType* pWDICtx,
28132 WDI_EventInfoType* pEventData
28133)
28134{
28135 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28136 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28137 wpt_uint8* pSendBuffer = NULL;
28138 wpt_uint16 usDataOffset = 0;
28139 wpt_uint16 usSendSize = 0;
28140
28141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28142
28143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028144 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028145
28146 /*-------------------------------------------------------------------------
28147 Sanity check
28148 -------------------------------------------------------------------------*/
28149 if (( NULL == pEventData ) ||
28150 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28151 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28152 {
28153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028154 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028155 WDI_ASSERT(0);
28156 return WDI_STATUS_E_FAILURE;
28157 }
28158
28159 /*-----------------------------------------------------------------------
28160 Get message buffer
28161 -----------------------------------------------------------------------*/
28162 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28163 sizeof(WDI_UpdateVHTOpMode),
28164 &pSendBuffer, &usDataOffset, &usSendSize))||
28165 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28166 {
28167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28168 "Unable to get send buffer in update vht opMode req");
28169 WDI_ASSERT(0);
28170 return WDI_STATUS_E_FAILURE;
28171 }
28172
28173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028174 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028175
28176 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28177 sizeof(WDI_UpdateVHTOpMode));
28178
28179 /*-------------------------------------------------------------------------
28180 Send Start Request to HAL
28181 -------------------------------------------------------------------------*/
28182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28183 wdiVHTOpModeCb,
28184 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28185
28186}
28187
28188WDI_Status
28189WDI_UpdateVHTOpModeReq
28190(
28191 WDI_UpdateVHTOpMode *pData,
28192 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28193 void* pUserData
28194)
28195{
28196 WDI_EventInfoType wdiEventData;
28197
28198 /*------------------------------------------------------------------------
28199 Sanity Check
28200 ------------------------------------------------------------------------*/
28201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28202 {
28203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28204 "WDI API call before module is initialized - Fail request");
28205
28206 return WDI_STATUS_E_NOT_ALLOWED;
28207 }
28208
28209 /*------------------------------------------------------------------------
28210 Fill in Event data and post to the Main FSM
28211 ------------------------------------------------------------------------*/
28212 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28213 wdiEventData.pEventData = pData;
28214 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28215 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28216 wdiEventData.pUserData = pUserData;
28217
28218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028219 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028220
28221 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28222
28223}
28224#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028225
28226/**
28227 @brief WDI_TransportChannelDebug -
28228 Display DXE Channel debugging information
28229 User may request to display DXE channel snapshot
28230 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028231
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028232 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028233 @param enableStallDetect : Enable stall detect feature
28234 This feature will take effect to data performance
28235 Not integrate till fully verification
28236 @see
28237 @return none
28238*/
28239void WDI_TransportChannelDebug
28240(
28241 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028242 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028243)
28244{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028245 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028246 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028247}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028248/**
28249 @brief WDI_SsrTimerCB
28250 Callback function for SSR timer, if this is called then the graceful
28251 shutdown for Riva did not happen.
28252
28253 @param pUserData : user data to timer
28254
28255 @see
28256 @return none
28257*/
28258void
28259WDI_SsrTimerCB
28260(
28261 void *pUserData
28262)
28263{
28264 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28266
28267 if (NULL == pWDICtx )
28268 {
28269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028270 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028271 WDI_ASSERT(0);
28272 return;
28273 }
28274 wpalRivaSubystemRestart();
28275
28276 return;
28277
28278}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028279
28280/**
28281 @brief WDI_SetEnableSSR -
28282 This API is called to enable/disable SSR on WDI timeout.
28283
28284 @param enableSSR : enable/disable SSR
28285
28286 @see
28287 @return none
28288*/
28289void WDI_SetEnableSSR(wpt_boolean enableSSR)
28290{
28291 gWDICb.bEnableSSR = enableSSR;
28292}
Leo Chang00bc9132013-08-01 19:21:11 -070028293
28294
28295#ifdef FEATURE_WLAN_LPHB
28296/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028297 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028298 This function will be invoked when FW detects low power
28299 heart beat failure
28300
28301 @param pWDICtx : wdi context
28302 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028303 @see
28304 @return Result of the function call
28305*/
28306WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028307WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028308(
28309 WDI_ControlBlockType* pWDICtx,
28310 WDI_EventInfoType* pEventData
28311)
28312{
28313 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028314 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28316
28317 /*-------------------------------------------------------------------------
28318 Sanity check
28319 -------------------------------------------------------------------------*/
28320 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28321 (NULL == pEventData->pEventData))
28322 {
28323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28324 "%s: Invalid parameters", __func__);
28325 WDI_ASSERT(0);
28326 return WDI_STATUS_E_FAILURE;
28327 }
28328
28329 /*-------------------------------------------------------------------------
28330 Extract indication and send it to UMAC
28331 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028332 wpalMemoryCopy(&lphbIndicationParam,
28333 pEventData->pEventData,
28334 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028335
Leo Chang8d19a5f2013-09-26 13:32:26 -070028336 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028337 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028338 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028339 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028340 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028341 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028342 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028343 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028344 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028345 /*Notify UMAC*/
28346 if (pWDICtx->wdiLowLevelIndCB)
28347 {
28348 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28349 }
28350
28351 return WDI_STATUS_SUCCESS;
28352}
28353
28354/**
28355 @brief WDI_ProcessLphbCfgRsp -
28356 LPHB configuration response from FW
28357
28358 @param pWDICtx : wdi context
28359 pEventData : indication data
28360
28361 @see
28362 @return Result of the function call
28363*/
28364WDI_Status WDI_ProcessLphbCfgRsp
28365(
28366 WDI_ControlBlockType* pWDICtx,
28367 WDI_EventInfoType* pEventData
28368)
28369{
28370 WDI_Status wdiStatus;
28371 eHalStatus halStatus;
28372 WDI_LphbCfgCb wdiLphbCfgCb;
28373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28374
28375 /*-------------------------------------------------------------------------
28376 Sanity check
28377 -------------------------------------------------------------------------*/
28378 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28379 (NULL == pEventData->pEventData))
28380 {
28381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28382 "%s: Invalid parameters", __func__);
28383 WDI_ASSERT(0);
28384 return WDI_STATUS_E_FAILURE;
28385 }
28386
28387 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28388
28389 /*-------------------------------------------------------------------------
28390 Extract response and send it to UMAC
28391 -------------------------------------------------------------------------*/
28392 halStatus = *((eHalStatus*)pEventData->pEventData);
28393 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28394
28395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28396 "LPHB Cfg Rsp Return status %d", wdiStatus);
28397 /*Notify UMAC*/
28398 if (NULL != wdiLphbCfgCb)
28399 {
28400 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28401 }
28402
28403 return WDI_STATUS_SUCCESS;
28404}
28405
28406/**
28407 @brief WDI_ProcessLPHBConfReq -
28408 LPHB configuration request to FW
28409
28410 @param pWDICtx : wdi context
28411 pEventData : indication data
28412
28413 @see
28414 @return none
28415*/
28416WDI_Status WDI_ProcessLPHBConfReq
28417(
28418 WDI_ControlBlockType* pWDICtx,
28419 WDI_EventInfoType* pEventData
28420)
28421{
28422 WDI_LPHBReq *pLphbReqParams;
28423 WDI_Status wdiStatus;
28424 wpt_uint8* pSendBuffer = NULL;
28425 wpt_uint16 usDataOffset = 0;
28426 wpt_uint16 usSendSize = 0;
28427 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28429
28430 /*-------------------------------------------------------------------------
28431 Sanity check
28432 -------------------------------------------------------------------------*/
28433 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28434 {
28435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28436 "%s: Invalid parameters in Suspend ind",__func__);
28437 WDI_ASSERT(0);
28438 return WDI_STATUS_E_FAILURE;
28439 }
28440
28441 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28442
28443 /*-----------------------------------------------------------------------
28444 Get message buffer
28445 -----------------------------------------------------------------------*/
28446 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28447 WDI_LPHB_CFG_REQ,
28448 sizeof(tHalLowPowerHeartBeatReqMsg),
28449 &pSendBuffer, &usDataOffset, &usSendSize))||
28450 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28451 {
28452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28453 "Unable to get send buffer in LPHB Ind ");
28454 WDI_ASSERT(0);
28455 return WDI_STATUS_E_FAILURE;
28456 }
28457
28458 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28459 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28460
28461 halLphbReqRarams->lowPowerHeartBeatCmdType =
28462 (tANI_U16)(++pLphbReqParams->cmd);
28463 switch ((tANI_U16)pLphbReqParams->cmd)
28464 {
28465 case WDI_LPHB_SET_EN_PARAMS_INDID:
28466 halLphbReqRarams->sessionIdx =
28467 pLphbReqParams->params.lphbEnableReq.session;
28468 halLphbReqRarams->options.control.heartBeatEnable =
28469 pLphbReqParams->params.lphbEnableReq.enable;
28470 halLphbReqRarams->options.control.heartBeatType =
28471 pLphbReqParams->params.lphbEnableReq.item;
28472 break;
28473
28474 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28475 halLphbReqRarams->sessionIdx =
28476 pLphbReqParams->params.lphbTcpParamReq.session;
28477 halLphbReqRarams->options.tcpParams.timeOutSec =
28478 pLphbReqParams->params.lphbTcpParamReq.timeout;
28479 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28480 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28481 sizeof(v_U32_t));
28482 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28483 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28484 sizeof(v_U32_t));
28485
28486 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28487 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28488 WDI_MAC_ADDR_LEN);
28489
28490 halLphbReqRarams->options.tcpParams.hostPort =
28491 pLphbReqParams->params.lphbTcpParamReq.src_port;
28492 halLphbReqRarams->options.tcpParams.destPort =
28493 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028494 halLphbReqRarams->options.tcpParams.timePeriodSec =
28495 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28496 halLphbReqRarams->options.tcpParams.tcpSn =
28497 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028498 break;
28499
28500 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28501 halLphbReqRarams->sessionIdx =
28502 pLphbReqParams->params.lphbTcpFilterReq.session;
28503 halLphbReqRarams->options.tcpUdpFilter.offset =
28504 pLphbReqParams->params.lphbTcpFilterReq.offset;
28505 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28506 pLphbReqParams->params.lphbTcpFilterReq.length;
28507 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28508 pLphbReqParams->params.lphbTcpFilterReq.filter,
28509 WDI_LPHB_FILTER_LEN);
28510 break;
28511
28512 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28513 halLphbReqRarams->sessionIdx =
28514 pLphbReqParams->params.lphbUdpParamReq.session;
28515 halLphbReqRarams->options.udpParams.timeOutSec =
28516 pLphbReqParams->params.lphbUdpParamReq.timeout;
28517 halLphbReqRarams->options.udpParams.timePeriodSec =
28518 pLphbReqParams->params.lphbUdpParamReq.interval;
28519 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28520 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28521 sizeof(v_U32_t));
28522 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28523 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28524 sizeof(v_U32_t));
28525
28526 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28527 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28528 WDI_MAC_ADDR_LEN);
28529
28530 halLphbReqRarams->options.udpParams.hostPort =
28531 pLphbReqParams->params.lphbUdpParamReq.src_port;
28532 halLphbReqRarams->options.udpParams.destPort =
28533 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28534 break;
28535
28536 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28537 halLphbReqRarams->sessionIdx =
28538 pLphbReqParams->params.lphbUdpFilterReq.session;
28539 halLphbReqRarams->options.tcpUdpFilter.offset =
28540 pLphbReqParams->params.lphbUdpFilterReq.offset;
28541 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28542 pLphbReqParams->params.lphbUdpFilterReq.length;
28543 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28544 pLphbReqParams->params.lphbUdpFilterReq.filter,
28545 WDI_LPHB_FILTER_LEN);
28546 break;
28547
28548 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28549 /* NA */
28550 break;
28551
28552 default:
28553 break;
28554 }
28555
28556 /*-------------------------------------------------------------------------
28557 Send Suspend Request to HAL
28558 -------------------------------------------------------------------------*/
28559 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28560 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28561
28562 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28563 usSendSize, pWDICtx->pfncRspCB,
28564 pWDICtx->pReqStatusUserData,
28565 WDI_LPHB_CFG_RESP);
28566
28567 return wdiStatus;
28568}
28569
28570/**
28571 @brief WDI_LPHBConfReq -
28572 LPHB configuration request API
28573
28574 @param lphbconfParam : configuration parameter
28575 usrData : client context
28576 lphbCfgCb : callback function pointer
28577
28578 @see
28579 @return Success or fail status code
28580*/
28581WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28582 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28583{
28584 WDI_EventInfoType wdiEventData;
28585
28586 /*------------------------------------------------------------------------
28587 Sanity Check
28588 ------------------------------------------------------------------------*/
28589 if (eWLAN_PAL_FALSE == gWDIInitialized)
28590 {
28591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28592 "WDI API call before module is initialized - Fail request");
28593
28594 return WDI_STATUS_E_NOT_ALLOWED;
28595 }
28596
28597 /*------------------------------------------------------------------------
28598 Fill in Event data and post to the Main FSM
28599 ------------------------------------------------------------------------*/
28600 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28601 wdiEventData.pEventData = lphbconfParam;
28602 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28603 wdiEventData.pCBfnc = lphbCfgCb;
28604 wdiEventData.pUserData = usrData;
28605
28606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28607}
28608#endif /* FEATURE_WLAN_LPHB */
28609
Ravi Joshi96d77342013-07-23 08:37:49 -070028610/**
28611 @brief WDI_ProcessIbssPeerInactivityInd
28612 Process peer inactivity indication coming from HAL
28613
28614 @param pWDICtx: pointer to the WLAN DAL context
28615 pEventData: pointer to the event information structure
28616 @see
28617 @return Result of the function call
28618*/
28619WDI_Status
28620WDI_ProcessIbssPeerInactivityInd
28621(
28622 WDI_ControlBlockType* pWDICtx,
28623 WDI_EventInfoType* pEventData
28624)
28625{
28626 WDI_LowLevelIndType wdiInd;
28627 tIbssPeerInactivityIndMsg halIbssIndMsg;
28628
28629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28630
28631 /*-------------------------------------------------------------------------
28632 Sanity check
28633 -------------------------------------------------------------------------*/
28634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28635 ( NULL == pEventData->pEventData ))
28636 {
28637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28638 "%s: Invalid parameters", __func__);
28639 WDI_ASSERT( 0 );
28640 return WDI_STATUS_E_FAILURE;
28641 }
28642
28643 /*-------------------------------------------------------------------------
28644 Extract indication and send it to UMAC
28645 -------------------------------------------------------------------------*/
28646 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28647 pEventData->pEventData,
28648 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28649
28650 /*Fill in the indication parameters*/
28651 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28652
28653 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28654 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28655
28656 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28657 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28658
28659 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28660 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28661 sizeof(tSirMacAddr));
28662
28663 /*Notify UMAC*/
28664 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28665
28666 return WDI_STATUS_SUCCESS;
28667
28668} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028669
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028670/**
28671*@brief WDI_RateUpdateInd will be called when the upper MAC
28672 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028673
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028674
28675 @param wdiRateUpdateIndParams:
28676
28677
28678 @see
28679 @return Result of the function call
28680*/
28681WDI_Status
28682WDI_RateUpdateInd
28683(
28684 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28685)
28686{
28687 WDI_EventInfoType wdiEventData;
28688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28689
28690 /*------------------------------------------------------------------------
28691 Sanity Check
28692 ------------------------------------------------------------------------*/
28693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28694 {
28695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28696 "WDI API call before module is initialized - Fail request");
28697
28698 return WDI_STATUS_E_NOT_ALLOWED;
28699 }
28700
28701 /*------------------------------------------------------------------------
28702 Fill in Event data and post to the Main FSM
28703 ------------------------------------------------------------------------*/
28704 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28705 wdiEventData.pEventData = wdiRateUpdateIndParams;
28706 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28707 wdiEventData.pCBfnc = NULL;
28708 wdiEventData.pUserData = NULL;
28709
28710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28711
28712}/* WDI_RateUpdateInd */
28713
28714/**
28715 @brief Process Rate Update Indication and post it to HAL
28716
28717 @param pWDICtx: pointer to the WLAN DAL context
28718 pEventData: pointer to the event information structure
28719
28720 @see
28721 @return Result of the function call
28722*/
28723WDI_Status
28724WDI_ProcessRateUpdateInd
28725(
28726 WDI_ControlBlockType* pWDICtx,
28727 WDI_EventInfoType* pEventData
28728)
28729{
28730 wpt_uint8* pSendBuffer = NULL;
28731 wpt_uint16 usDataOffset = 0;
28732 wpt_uint16 usSendSize = 0;
28733 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28734 tHalRateUpdateInd *pRateUpdateInd;
28735 WDI_Status wdiStatus;
28736
28737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28738
28739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28740 "%s", __func__);
28741
28742 /*-------------------------------------------------------------------------
28743 Sanity check
28744 -------------------------------------------------------------------------*/
28745 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28746 {
28747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28748 "%s: Invalid parameters", __func__);
28749 WDI_ASSERT(0);
28750 return WDI_STATUS_E_FAILURE;
28751 }
28752 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28753 /*-----------------------------------------------------------------------
28754 Get message buffer
28755 -----------------------------------------------------------------------*/
28756
28757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28758 WDI_RATE_UPDATE_IND,
28759 sizeof(tHalRateUpdateParams),
28760 &pSendBuffer, &usDataOffset, &usSendSize))||
28761 ( usSendSize < (usDataOffset +
28762 sizeof(tHalRateUpdateParams) )))
28763 {
28764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28765 "Unable to get send buffer in Rate Update Indication %p ",
28766 pEventData);
28767 WDI_ASSERT(0);
28768 return WDI_STATUS_E_FAILURE;
28769 }
28770
28771 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28772
28773 /* Copy the bssid */
28774 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28775 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28776
28777 /* Copy the tx flags */
28778 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28779 pwdiRateUpdateInd->ucastDataRateTxFlag;
28780 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28781 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28782 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28783 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28784 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28785 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28786
28787 /* Copy the tx rates */
28788 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28789 pwdiRateUpdateInd->ucastDataRate;
28790 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28791 pwdiRateUpdateInd->reliableMcastDataRate;
28792 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28793 pwdiRateUpdateInd->mcastDataRate24GHz;
28794 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28795 pwdiRateUpdateInd->mcastDataRate5GHz;
28796
28797 /*-------------------------------------------------------------------------
28798 Send Rate Update Indication to HAL
28799 -------------------------------------------------------------------------*/
28800 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28801 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28802
28803 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28804
28805 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28806 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28807
28808} /* WDI_ProcessRateUpdateInd */
28809
28810#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028811/**
28812 @brief Process stop batch indication from WDA
28813
28814 @param pWDICtx: pointer to the WLAN DAL context
28815 pEventData: pointer to the event information structure
28816
28817 @see
28818 @return Result of the function call
28819*/
28820WDI_Status
28821WDI_ProcessStopBatchScanInd
28822(
28823 WDI_ControlBlockType* pWDICtx,
28824 WDI_EventInfoType* pEventData
28825)
28826{
28827 wpt_uint8* pSendBuffer = NULL;
28828 wpt_uint16 usDataOffset = 0;
28829 wpt_uint16 usSendSize = 0;
28830 WDI_Status wdiStatus;
28831 tHalBatchScanStopIndParam *pHalInd = NULL;
28832 WDI_StopBatchScanIndType *pWdiInd = NULL;
28833
28834
28835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28836
28837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28838 "%s", __func__);
28839
28840 /*-------------------------------------------------------------------------
28841 Sanity check
28842 -------------------------------------------------------------------------*/
28843
28844 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28845 {
28846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28847 "%s: Invalid parameters", __func__);
28848 WDI_ASSERT(0);
28849 return WDI_STATUS_E_FAILURE;
28850 }
28851 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28852 /*-----------------------------------------------------------------------
28853 Get message buffer
28854 -----------------------------------------------------------------------*/
28855
28856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28857 WDI_STOP_BATCH_SCAN_IND,
28858 sizeof(tHalBatchScanStopIndParam),
28859 &pSendBuffer, &usDataOffset, &usSendSize))||
28860 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28861 {
28862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28863 "Unable to get send buffer in stop batch scan ind %p ",
28864 pEventData);
28865 WDI_ASSERT(0);
28866 return WDI_STATUS_E_FAILURE;
28867 }
28868
28869 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28870 pHalInd->param = pWdiInd->param;
28871
28872 pWDICtx->pReqStatusUserData = NULL;
28873 pWDICtx->pfncRspCB = NULL;
28874 /*-------------------------------------------------------------------------
28875 Send Stop batch scan indication to HAL
28876 -------------------------------------------------------------------------*/
28877 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28878 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28879}
28880
28881/**
28882 @brief This API is called to trigger batch scan results from FW
28883
28884 @param pWDICtx: pointer to the WLAN DAL context
28885 pEventData: pointer to the event information structure
28886
28887 @see
28888 @return Result of the function call
28889*/
28890WDI_Status
28891WDI_ProcessTriggerBatchScanResultInd
28892(
28893 WDI_ControlBlockType* pWDICtx,
28894 WDI_EventInfoType* pEventData
28895)
28896{
28897 WDI_Status wdiStatus;
28898 wpt_uint8* pSendBuffer = NULL;
28899 wpt_uint16 usDataOffset = 0;
28900 wpt_uint16 usSendSize = 0;
28901 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28902 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28903
28904
28905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28906
28907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28908 "%s", __func__);
28909
28910 /*-------------------------------------------------------------------------
28911 Sanity check
28912 -------------------------------------------------------------------------*/
28913
28914 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28915 {
28916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28917 "%s: Invalid parameters", __func__);
28918 WDI_ASSERT(0);
28919 return WDI_STATUS_E_FAILURE;
28920 }
28921 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28922 /*-----------------------------------------------------------------------
28923 Get message buffer
28924 -----------------------------------------------------------------------*/
28925
28926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28927 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28928 sizeof(tHalBatchScanTriggerResultParam),
28929 &pSendBuffer, &usDataOffset, &usSendSize))||
28930 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28931 {
28932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28933 "Unable to get send buffer in stop batch scan ind %p ",
28934 pEventData);
28935 WDI_ASSERT(0);
28936 return WDI_STATUS_E_FAILURE;
28937 }
28938
28939 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28940 pHalInd->param = pWdiInd->param;
28941
28942 pWDICtx->pReqStatusUserData = NULL;
28943 pWDICtx->pfncRspCB = NULL;
28944 /*-------------------------------------------------------------------------
28945 Send trigger batch scan result indication to HAL
28946 -------------------------------------------------------------------------*/
28947 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28948 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28949}
28950
28951
28952/**
28953 @brief Process set batch scan response from FW
28954
28955 @param pWDICtx: pointer to the WLAN DAL context
28956 pEventData: pointer to the event information structure
28957
28958 @see
28959 @return Result of the function call
28960*/
28961WDI_Status
28962WDI_ProcessSetBatchScanRsp
28963(
28964 WDI_ControlBlockType* pWDICtx,
28965 WDI_EventInfoType* pEventData
28966)
28967{
28968 WDI_SetBatchScanCb wdiSetBatchScanCb;
28969 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28970
28971 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
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_WARN,
28979 "%s: Invalid parameters", __func__);
28980 WDI_ASSERT(0);
28981 return WDI_STATUS_E_FAILURE;
28982 }
28983
28984 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28985 if ( NULL == wdiSetBatchScanCb)
28986 {
28987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28988 "%s: call back function is NULL", __func__);
28989 WDI_ASSERT(0);
28990 return WDI_STATUS_E_FAILURE;
28991 }
28992
28993 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28994
28995 if (NULL == pSetBatchScanRsp)
28996 {
28997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028998 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028999 pWDICtx, pEventData, pEventData->pEventData);
29000 WDI_ASSERT(0);
29001 return WDI_STATUS_E_FAILURE;
29002 }
29003
29004 /*extract response and send it to UMAC*/
29005 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29006
29007 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29008
29009 /*Notify UMAC*/
29010 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29011
29012 wpalMemoryFree(pSetBatchScanRsp);
29013
29014 return WDI_STATUS_SUCCESS;
29015}/*WDI_ProcessSetBatchScanRsp*/
29016
29017/**
29018 @brief Process batch scan result indication from FW
29019
29020 @param pWDICtx: pointer to the WLAN DAL context
29021 pEventData: pointer to the event information structure
29022
29023 @see
29024 @return Result of the function call
29025*/
29026WDI_Status
29027WDI_ProcessBatchScanResultInd
29028(
29029 WDI_ControlBlockType* pWDICtx,
29030 WDI_EventInfoType* pEventData
29031)
29032{
29033 void *pBatchScanResultInd;
29034 WDI_LowLevelIndType wdiInd;
29035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29036
29037 /*sanity check*/
29038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29039 ( NULL == pEventData->pEventData))
29040 {
29041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29042 "%s: Invalid parameters", __func__);
29043 WDI_ASSERT(0);
29044 return WDI_STATUS_E_FAILURE;
29045 }
29046
29047 /*extract response and send it to UMAC*/
29048 pBatchScanResultInd = (void *)pEventData->pEventData;
29049
29050 /*Fill in the indication parameters*/
29051 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29052
29053 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29054
29055 /*Notify UMAC*/
29056 if (pWDICtx->wdiLowLevelIndCB)
29057 {
29058 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29059 }
29060 else
29061 {
29062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29063 "%s: WDILowLevelIndCb is null", __func__);
29064 WDI_ASSERT(0);
29065 return WDI_STATUS_E_FAILURE;
29066 }
29067
29068 return WDI_STATUS_SUCCESS;
29069} /*End of WDI_ProcessBatchScanResultInd*/
29070
29071/**
29072 @brief WDI_ProcessSetBatchScanReq -
29073 Set batch scan request to FW
29074
29075 @param pWDICtx : wdi context
29076 pEventData : indication data
29077
29078 @see
29079 @return none
29080*/
29081WDI_Status WDI_ProcessSetBatchScanReq
29082(
29083 WDI_ControlBlockType* pWDICtx,
29084 WDI_EventInfoType* pEventData
29085)
29086{
29087 WDI_SetBatchScanReqType *pWdiReq;
29088 WDI_Status wdiStatus;
29089 wpt_uint8* pSendBuffer = NULL;
29090 wpt_uint16 usDataOffset = 0;
29091 wpt_uint16 usSendSize = 0;
29092 tHalBatchScanSetParams *pHalReq;
29093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29094
29095 /*sanity check*/
29096 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29097 {
29098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29099 "%s: Invalid parameters in set batch scan request", __func__);
29100 WDI_ASSERT(0);
29101 return WDI_STATUS_E_FAILURE;
29102 }
29103
29104
29105 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29106
29107
29108 /*get message buffer*/
29109 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29110 WDI_SET_BATCH_SCAN_REQ,
29111 sizeof(tHalBatchScanSetParams),
29112 &pSendBuffer, &usDataOffset, &usSendSize))||
29113 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29114 {
29115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29116 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29117 WDI_ASSERT(0);
29118 return WDI_STATUS_E_FAILURE;
29119 }
29120
29121 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29122
29123 pHalReq->rtt = pWdiReq->rtt;
29124 pHalReq->rfBand = pWdiReq->rfBand;
29125 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29126 pHalReq->scanInterval = pWdiReq->scanFrequency;
29127 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29128
29129 /*send set batch scan request to fw*/
29130 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29131 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29132
29133 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29134 usSendSize, pWDICtx->pfncRspCB,
29135 pWDICtx->pReqStatusUserData,
29136 WDI_SET_BATCH_SCAN_RESP);
29137
29138 return wdiStatus;
29139}
29140
29141/**
29142 @brief WDI_SetBatchScanReq
29143 This API is called to set batch scan request in FW
29144
29145 @param pBatchScanReqParam : pointer to set batch scan re param
29146 usrData : Client context
29147 setBatchScanRspCb : set batch scan resp callback
29148 @see
29149 @return SUCCESS or FAIL
29150*/
29151WDI_Status WDI_SetBatchScanReq
29152(
29153 void *pBatchScanReqParam,
29154 void *usrData,
29155 WDI_SetBatchScanCb setBatchScanRspCb
29156)
29157{
29158 WDI_EventInfoType wdiEventData;
29159
29160 /*sanity check*/
29161 if (eWLAN_PAL_FALSE == gWDIInitialized)
29162 {
29163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29164 "WDI API call before module is initialized - Fail request");
29165
29166 return WDI_STATUS_E_NOT_ALLOWED;
29167 }
29168
29169 /* fill in event data and post to the main FSM */
29170 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29171 wdiEventData.pEventData = pBatchScanReqParam;
29172 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29173 wdiEventData.pCBfnc = setBatchScanRspCb;
29174 wdiEventData.pUserData = usrData;
29175
29176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29177}
29178
29179/**
29180 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29181
29182 @param None
29183
29184 @see
29185
29186 @return Status of the request
29187*/
29188WDI_Status
29189WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29190{
29191 WDI_EventInfoType wdiEventData;
29192
29193 /*-------------------------------------------------------------------------
29194 Sanity Check
29195 ------------------------------------------------------------------------*/
29196 if (eWLAN_PAL_FALSE == gWDIInitialized)
29197 {
29198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29199 "WDI API call before module is initialized - Fail request!");
29200
29201 return WDI_STATUS_E_NOT_ALLOWED;
29202 }
29203
29204 /*-------------------------------------------------------------------------
29205 Fill in Event data and post to the Main FSM
29206 ------------------------------------------------------------------------*/
29207 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29208 wdiEventData.pEventData = pWdiReq;
29209 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29210 wdiEventData.pCBfnc = NULL;
29211 wdiEventData.pUserData = NULL;
29212
29213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29214}
29215
29216/**
29217 @brief WDI_TriggerBatchScanResultInd
29218 This API is called to pull batch scan result from FW
29219
29220 @param pWdiReq : pointer to get batch scan ind param
29221 @see
29222 @return SUCCESS or FAIL
29223*/
29224WDI_Status WDI_TriggerBatchScanResultInd
29225(
29226 WDI_TriggerBatchScanResultIndType *pWdiReq
29227)
29228{
29229 WDI_EventInfoType wdiEventData;
29230 /*-------------------------------------------------------------------------
29231 Sanity Check
29232 ------------------------------------------------------------------------*/
29233 if (eWLAN_PAL_FALSE == gWDIInitialized)
29234 {
29235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29236 "WDI API call before module is initialized - Fail request!");
29237
29238 return WDI_STATUS_E_NOT_ALLOWED;
29239 }
29240
29241 /*-------------------------------------------------------------------------
29242 Fill in Event data and post to the Main FSM
29243 ------------------------------------------------------------------------*/
29244 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29245 wdiEventData.pEventData = pWdiReq;
29246 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29247 wdiEventData.pCBfnc = NULL;
29248 wdiEventData.pUserData = NULL;
29249
29250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29251}
Rajeev3db91f12013-10-05 11:03:42 +053029252#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Changd95d6622013-12-15 15:18:55 -080029253
29254#ifdef FEATURE_WLAN_CH_AVOID
29255/**
29256 @brief v -WDI_ProcessChAvoidInd
29257
29258
29259 @param pWDICtx : wdi context
29260 pEventData : indication data
29261 @see
29262 @return Result of the function call
29263*/
29264WDI_Status
29265WDI_ProcessChAvoidInd
29266(
29267 WDI_ControlBlockType* pWDICtx,
29268 WDI_EventInfoType* pEventData
29269)
29270{
29271 WDI_LowLevelIndType wdiInd;
29272 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29273 wpt_uint16 rangeLoop;
29274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29275
29276 /*-------------------------------------------------------------------------
29277 Sanity check
29278 -------------------------------------------------------------------------*/
29279 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29280 (NULL == pEventData->pEventData))
29281 {
29282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29283 "%s: Invalid parameters", __func__);
29284 WDI_ASSERT(0);
29285 return WDI_STATUS_E_FAILURE;
29286 }
29287
29288 /*-------------------------------------------------------------------------
29289 Extract indication and send it to UMAC
29290 -------------------------------------------------------------------------*/
29291 wpalMemoryCopy(&chAvoidIndicationParam,
29292 pEventData->pEventData,
29293 sizeof(tHalAvoidFreqRangeIndParams));
29294
29295 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29296 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29297 chAvoidIndicationParam.avoidCnt;
29298 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29299 (void *)chAvoidIndicationParam.avoidRange,
29300 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29301 sizeof(WDI_ChAvoidFreqType));
29302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29303 "%s: band count %d", __func__,
29304 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29305 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29306 {
29307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29308 "%s: srart freq %d, end freq %d", __func__,
29309 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29310 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29311 }
29312
29313 /*Notify UMAC*/
29314 if (pWDICtx->wdiLowLevelIndCB)
29315 {
29316 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29317 }
29318
29319 return WDI_STATUS_SUCCESS;
29320}
29321#endif /* FEATURE_WLAN_CH_AVOID */
29322